【お知らせ】プログラミング記事の投稿はQiitaに移行しました。V6お盆休みに予定していたV6移植ハッカソンですが、残念ながら参加者が少なかったため中止とさせていただきました。今後は池袋バイナリ勉強会の中で作業を進める予定です。力不足、大変申し訳ありません。V6先日、PDP-11から8086へのトランスレータを試作しました。簡単なプログラムを変換して大まかなABIが見えてきたので、仮にまとめます。詳細についてはV6移植ハッカソンで作業しながら決めていこうと思います。V6V6移植ハッカソンの作業フローをまとめました。今まで作って来たインタプリタやトランスレータの位置付けがはっきりするのではないでしょうか。V6V6移植ハッカソンでは手始めにトランスレータを作りながらPDP-11から8086への変換について調べる予定です。現場でスクラッチから始めると発散しかねないので、ある程度方向付けるためトランスレータを試作しました。V68086版V6でC言語のハローワールドが実行できる最低限のlibcを実装しました。OS本体はまだ存在しないためインタプリタ上で実行します。V6前回、コマンドやオプションを駆使して8086V6のa.outを作っていました。ACKをカスタマイズしてオプションなしで出力できるようになりました。-.oはgccの-nostdlibに相当します。V68086版V6のa.outはマジックナンバーで識別することにしました。PDP-11のマジックナンバーはブランチ命令に由来します。V6前回、インタプリタを複数のCPUやOSに対応させる過程を書きました。実際に動かしてみます。SVG自作インタプリタを少しずつ進化させて、複数のCPUやOSをサポートできるようになりました。クラス設計で試行錯誤した過程を残しておきます。文中の図はインラインSVGで描いています。V6i8086インタプリタにPDP-11インタプリタを統合しました。V6の両方のバイナリを動かせます。V6のccを動かしてカーネルがビルドできることを確認しました。x86-16【追記】残念ながら参加者が少なかったため中止とさせていただきました。今後は池袋バイナリ勉強会の中で作業を進める予定です。V6を8086に移植するハッカソンを開催します。V6前回、アセンブラからシステムコールを呼ぶ例を示しました。通常はC言語からlibc経由で呼び出します。2.0.4でlibcからexitシステムコールが呼び出されるまでを追ってみます。V6i8086の逆アセンブラに引き続きインタプリタを実装して、MINIXのカーネルがビルドできるようになりました。V6のprintf()は内部で1文字ずつputchar()を呼んでいます。通常は1文字ずつwriteシステムコールが呼ばれますが、特殊な細工をするとバッファリングされるようになります。今回はnmとputchar()のソースを取り上げます。V6Lions本読書会2011秋合宿での作業についてまとめたスライドを公開します(他の方の発表)。V6のCコンパイラを改造しようとして、前段階のビルドにハマって何もできなかった話です。V6Lions本読書会2011秋合宿で発表したLTの資料を公開します(他の方の発表)。id:n7shi:20111011で告知したサンクと継続の勉強会に絡めた内容です。V6のファイルシステムを分析しましたが、リバースエンジニアリングをソースで裏付ける手法だったため漏れがありました。以下の記事で二重間接参照の存在を知りました。V6id:n7shi:20101204のファイルシステム読み込みツールを改造して、ディレクトリやファイルの構造が表示できるようになりました。今まではイメージ全体をZIP圧縮して取り出すことしかできませんでしたが、ファイル単位で取り出せるようになりました。5月2日(月)でLTをして来ました。V6関係のツールがメインですが、自己紹介に絡めて独自言語のセルフホスティングも取り上げています。V6id:n7shi:20110408で開発したSilverlight版のPDP-11インタプリタですが、ブラウザから出してコマンドラインで動かなければ、実用には厳しいと感じました。そのためC++で書き直して、Win32とPOSIXに対応しました。V6id:n7shi:20110330で開発に着手したPDP-11のインタプリタですが、最低限必要な命令とシステムコールを実装して、ようやくV6のコンパイラが動くようになりました。Silverlightに対応した環境ではブラウザ内で動きます。V6のバイナリを対象としたインタプリタの開発に着手しました。未実装の命令やシステムコールが多数ありますが、とりあえずprintf()くらいは動くようになりました。V6PDP-11の命令について調査するため、Silverlightで逆アセンブラを作成しました。V6のa.outに対応しています。V6MSYSでPDP-11のクロスgccをビルドしました。バイナリを置いておきます。/usr/localに展開すれば、pdp11-aout-gccとして呼び出せるようになります。V6をSIMHで動かしてみました。分析のためファイルを取り出そうとしたのですが、TCP/IP以前のOSのためネットワークが使えるのか不明で、ディスクイメージからファイルを取り出す方法も分かりません。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。