FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages

「30日でできる!OS自作入門」を読み始めた (2. 3日目)

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

30日でできる! OS自作入門

30日でできる! OS自作入門

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章に進んでいこう。

f:id:msyksphinz:20180225152208p:plain
図. 第3章で登場する、画面を真っ黒にするプログラムが動作した様子。