はじめてのOSコードリーディング #2 simhでV6を動かす
simhというエミュレータ上でUNIX V6を動かせるとのことで試してみた。
simhエミュレータのインストール
http://simh.trailing-edge.com/がsimhの開発プロジェクト。
debian系なら apt-get で楽ちんインストール。
$ sudo apt-get install simh
simh用のUNIX V6キットをダウンロード
http://simh.trailing-edge.com/software.htmlからPDP-11 UNIX V6キットをダウンロードする。
$ wget http://simh.trailing-edge.com/kits/uv6swre.zip
$ unzip uv6swre.zip
simhでUNIX V6を動かす
起動の前にPDP-11用の設定ファイルを作る。名前はなんでもいいけど、pdp11.rcにした。
set cpu 11/40
set cpu u18
att rk0 unix0_v6_rk.dsk
att rk1 unix1_v6_rk.dsk
att rk2 unix2_v6_rk.dsk
att rk3 unix3_v6_rk.dsk
boot rk0
simh、UNIX V6を起動する
simhのPDP-11エミュレータを起動する。引数に先ほどの設定ファイルをつける。
$ pdp11 pdp11.rc
PDP-11 simulator V3.8-1
Disabling XQ
@
@の後にunix
と入力するとUNIX V6が立ち上がる。ログイン名はroot
。
@unix
login:root
UNIX V6の終了方法
sync
を3回入力してからctrl-e
を入力する。
# sync
# sync
# sync
# [ctrl-e]
simhの終了方法
quit
を入力
UNIX V6上でアセンブラ出力
ed hoge.c
で頑張ってコードを書くcc -S hoge.c
でアセンブラコードを吐かせるcat hoge.s
で眺める
参考ページ
2013.1.30追記
ここのページのやり方の方がいいみたい。