PDP-11インタプリタでUNIX V6のカーネルをビルドするまで

PDP-11のクロスコンパイラがビルドできたことをきっかけに、逆アセンブラを作り始めて、インタプリタでカーネルをビルドできるようになる過程です。 当初はブラウザで動かすためSilverlightで開発していましたが、最後にC++で書き直してコマンドラインアプリとしました。
6
前へ 1 ・・ 4 5
七誌 @7shi

Win32でもfork()とunlink()に細工してコマンドライン版V6インタプリタが動くようになった。Silverlightではexec()に細工して終了後fork()にlongjmpもどきで戻っていたけど、fork()でVMインスタンスをコピーした方が素直だった。

2011-04-12 17:47:00
七誌 @7shi

Win32だと握っているファイルを削除できないので、unlink()に失敗したら削除を予約して、close()後にリトライするという細工を施した。このようにfork()とunlink()の細工だけで、V6のカーネルビルドまでできるようになった。

2011-04-12 17:57:55
七誌 @7shi

同一マシン・同一OS上でWin32版とInterix版のV6カーネルビルド速度を比較してみた。Win32が21.7秒、Interixが96.6秒、約4.5倍の差。Win32版の速度なら十分使い物になる。

2011-04-12 18:08:22
七誌 @7shi

@superhoge 今夜中にWindowsでも動くインタプリタとコンパイラのセットを公開します。(公開が遅れているのはWindowsネイティブに移植していたためです)

2011-04-12 19:16:49
七誌 @7shi

#readLions 読書会でデモしたコマンドライン版のインタプリタを公開しました。 http://d.hatena.ne.jp/n7shi/20110412/1302608565

2011-04-12 20:42:44
七誌 @7shi

V6関係はようやく落ち着いた。食事を済ませたらPE勉強会の準備に取り掛かろう。

2011-04-12 20:54:03

V6移植ハッカソン

七誌 @7shi

お盆休みにUNIX V6を8086に移植するハッカソンを開催します。カーネルの移植は後回しにして、PDP-11と8086のインタプリタを使いながらユーザーランドのトランスレートから着手する予定です。 http://t.co/iE4qMVZ2av #8086v6

2013-06-30 10:36:47
前へ 1 ・・ 4 5