4日目、終了。内容は VRAM とパレットをいじって画面出力すること。IN/OUT 命令(あぁ、86系だなぁという感じ)と割り込みの禁止命令が出てきた。
C言語のポインタの説明がえんえん、、、正直うざい。
内容そのものはたいしたことはないけど、ここでもツール上の問題に遭遇。結局 gcc のクロスコンパイラを make することにした。以下、その覚え書き。
– binutils, gcc-3.4.x のソースコードをダウンロード
– binutils を展開したディレクトリで
$ CC=gcc-3.3 ./configure –target=i686-coff
$ ./configure –target=i686-coff
$ make
$ sudo make install
※ 標準の gcc-4.0 だと gas のコンパイルでエラーになる
※古いバージョン(binutils-2.14)を使ってました。binutils-2.16.1 なら gcc-4.0 でも問題なくコンパイルできます
– gcc-3.4.x/gcc/config/i386/i386-coff.h を編集
1) LPREFIX, USER_LABEL_PREFIX, ASM_GENERATE_INTERNAL_LABEL の定義(#undef と #define の両方)を削除
2) #define READONLY_DATA_SECTION() data_section() を追加
3) ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL, ASM_OUTPUT_ALIGN を #undef する
4) CD-ROM 内 omake/tolsrc/go_0023s/config/bsd.h「#if 0 使わない #else 使う #endif」の else 部をコピーして追加
※5/16 修正(6日目に対応)
– gcc-3.4.x を展開したディレクトリで
$ ./configure –target=i686-coff
$ make
$ sudo make install
※ configure-target-libstdc++-v3 がエラーになるが、どうせ使わないので無視
これで i686-coff-gcc が使えるようになるので C のソースコードを直接オブジェクトファイル(COFF)にして、あとは Makefile で obj2bim に喰わせてやればいい。
古い方法: C ⇒ GAS ⇒ NAS ⇒ OBJ(COFF) ⇒ BIM ⇒ HRB
新しい方法: C ⇒ OBJ(COFF) ⇒ BIM ⇒ HRB
※ BIM や HRB は著者の人がつくった独自形式
だいぶシンプルになった。
Tags: OS自作入門