【お知らせ】プログラミング記事の投稿はQiitaに移行しました。V6お盆休みに予定していたV6移植ハッカソンですが、残念ながら参加者が少なかったため中止とさせていただきました。今後は池袋バイナリ勉強会の中で作業を進める予定です。力不足、大変申し訳ありません。MSYSスタート低レイヤー#2でid:shinichiro_hさんに全部入りのbinutilsが作れるということを教えて頂きました。MSYS(MinGW)用のバイナリを置いておきます。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で描いています。MINIX8086(16bitのx86)をサポートするコンパイラとしてACKが使えるようになりました。ACK自体の移植ではなく、MINIX用のバイナリを8086インタプリタ上で動かします。使用方法は以下を参照してください。V6i8086インタプリタにPDP-11インタプリタを統合しました。V6の両方のバイナリを動かせます。V6のccを動かしてカーネルがビルドできることを確認しました。x86-16先日、i8086インタプリタでMINIXのカーネルがビルドできるようになりました。x86-16【追記】残念ながら参加者が少なかったため中止とさせていただきました。今後は池袋バイナリ勉強会の中で作業を進める予定です。V6を8086に移植するハッカソンを開催します。V6前回、アセンブラからシステムコールを呼ぶ例を示しました。通常はC言語からlibc経由で呼び出します。2.0.4でlibcからexitシステムコールが呼び出されるまでを追ってみます。V6i8086の逆アセンブラに引き続きインタプリタを実装して、MINIXのカーネルがビルドできるようになりました。2.0.4をVMにインストールする方法について、調べたことや参考URLを残しておきます。通常の手順では配布ファイルからフロッピーディスクのイメージを作ってインストールします。手間が掛かるため、今回はインストール済みディスクイメージを使います。2.0.4をVMにインストール2013-06-06i8086の逆アセンブラx86-16前回、命令表を作成しました。今回はオペコードの構造を確認するため逆アセンブラを作ります。i8086の逆アセンブラ2013-06-05i8086の命令表x86-16i8086(16bitのx86)の命令フォーマットについて理解を深めるため、データシートを写経して表に整理しました。探せば既にあるとは思いますが、勉強のため手を動かしてみました。x86-1616bitのx86コードに触れたくなりました。2は16bitと32bitの両方に対応しています。16bitの方は80286のプロテクトモードを使用しているためリアルモードではありません。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。