More Related Content
PDF
PDF
PDF
DockerHubを活用してAnsibleのPlaybookを自動ビルドする PPTX
PDF
PDF
PDF
PPTX
Similar to PDP-11のインタプリタを作った話
PPTX
PPT
PDF
PDF
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか) PDF
PDF
PDF
PDF
今よりも少し(?)昔、 Windowsを作ろうとした話 PDF
PDF
PPTX
ハリボテなx86エミュレータの作り方 - how to make x86 emulator PPT
PDP-11のインタプリタを作った話
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
>PDP-11の逆アセンブラソース
int ptr :ポインター
Int pc : プログラムカウンタ
命令ごとに
ソース/デスティネーションのオペランドを
判定する
命令を1桁ずつ分類して
ニーモニックを判定する
例)000006 : RTT , 0001xx : JMP
- 13.
- 14.
- 15.
>PDP-11の逆アセンブラ(発展)ソース
アドレッシングモードの取り込み
R1 : R1にオペランドがある
(R1): R1にオペランドのアドレスがある
(R1)+ : R1オペランドのアドレス、実行後にR1の内容をインクリメント
*(R1)+ : R1にオペランドへのポインタのアドレス、実行後にR1の内容を2だけインクリメント
−(R1) : R1にオペランドのアドレス、実行後にR1の内容をデクリメント
*−(R1) : R1にオペランドへのポインタのアドレス、実行後にR1の内容を2だけデクリメント
2(R1) : R1+2がオペランドのアドレス
*2(R1) : R1+2がオペランドのポインタへのアドレス
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
>PDP-11のインタプリタでわかったこと
• UNIX V6
•ユーザー空間とカーネル空間は異なる
• プロセスごとに仮想アドレス空間を持ち、MMUがメモリの物理アドレスに変
換する
• 仮想アドレス空間はテキスト/空き領域(マジックナンバ0410の場合)
/データ+bss/ヒープ/空き領域/スタックとなっている
• ファイルはinodeで管理されている
• ファイル入出力等の基本機能はシステムコールを呼び出すことで実現して
いる
• 関数呼び出しをする場合は、スタックに引数と戻り先のアドレスを格納し
てからジャンプする
- 24.
- 25.
- 26.
>UNIX V6のカーネルビルド
• lib1
•cd ken
• java pdp11.Pdp11 -e -s cc -c -O *.c
• java pdp11.Pdp11 -e -s ar r lib1 main.o trap.o sig.o
sysent.o
• java pdp11.Pdp11 -e -s ar r lib1 *.o
• lib2
• cd dmr
• java pdp11.Pdp11 -e –s cc -c -O *.c
• java pdp11.Pdp11 -e -s ar r lib2 *.o
- 27.
>UNIX V6のカーネルビルド
• con/mkconf
•cd conf
• java pdp11.Pdp11 -e -s as m40.s
• rename a.out m40.o
• java pdp11.Pdp11 -e -s cc mkconf.c
• rename a.out mkconf
• rkunix
• (echo rk& echo tm& echo tc& echo done)| java
pdp11.Pdp11 -e -s mkconf
• java pdp11.Pdp11 -e -s cc -c c.c
• java pdp11.Pdp11 -e -s as l.s
• java pdp11.Pdp11 -e -s ld -x a.out m40.o c.o lib1 lib2
• copy a.out rkunix
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.