遅まきながら、「30日でできるOS自作入門」を読み始めた。

- 作者: 川合秀実
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2006/03/01
- メディア: 単行本
- 購入: 36人 クリック: 735回
- この商品を含むブログ (299件) を見る
3日目は意外と内容量が多くて、骨が折れる。 っていうか、独自のツールを使っているケースが多すぎて、何をやっているのか理解できないことが多い。
あまり書籍自体のせいにしたくないのだが、文体が軽すぎて、そっちに集中力がそがれて内容が頭に入ってこない... これだけのボリュームなんだから、もう少し普通の文体で書いてもいいんじゃないでしょうか...
本書では、アセンブラをnask (nasmの独自拡張)とedimg(要するにリンカ?)のようなものを使っているみたいなのだが、
どうも独自ツールだと面倒だし、周辺ツールはオリジナルのものを使ったほうが理解が進みそうなので、 nasm と、 edimg の代わりにddで実装を行った。
最初のディスク読み込みの部分については動作しているつもりになっていたのだがどうやら写経のミスがあってプログラムが動いていなかったらしい... その影響で、中盤の画面を真っ黒にする動作がうまく行かなくて四苦八苦した。
結局Makefileは以下のようにしている。アセンブリは nasm, リンク(というかディスクイメージ作成)はddを活用している。
run: helloos.img
qemu-system-i386 -fda $^
helloos.img: ipl.bin haribote.sys
echo haribote.sys > haribote.name
dd if=ipl.bin of=helloos.img count=2880 bs=512 conv=notrunc
dd if=haribote.name of=helloos.img count=1 bs=512 seek=19 conv=notrunc
dd if=haribote.sys of=helloos.img count=1 bs=512 seek=33 conv=notrunc
haribote.sys: haribote.nas
nasm $^ -o $@ -l haribote.lst
ipl.bin: helloos.nas
nasm -o $@ $^
clean:
rm -rf *.sys *.img *.o *.bin *.lst *.name *~
無事に動作した。C言語モードは、アセンブリの実装もかなり変えられているのでいったんスキップ。 第4章に進んでいこう。
図. 第3章で登場する、画面を真っ黒にするプログラムが動作した様子。