あんたいとる

無駄の中に宝がある!

30日でできる! OS自作入門(一日目)

PCの仕組みからアセンブラ入門まで

やったこと

バイナリエディタを使用してディスクイメージの作成

Bz.exeというバイナリエディタを使用して、本に記載してあるとおりに16進数のデータを入力していき、ファイルに保存。

作成したディスクイメージをPCエミュレータで起動

これも本に記載してある通りにバッチファイル( run.bat )を作成し、実行するとPCエミュレータQEMU)が起動。"hello, world" の文字がQEMUのコンソール画面に表示された。

アセンブラ

筆者作のアセンブラ「nask(なすく)」を使ってアセンブラのソースプログラムを書く。

・今回出てきた命令

命令 意味
DB命令 「data byte」の略。ファイルの内容を1バイトだけ直接書く命令。
RESB命令 「reserve byte」の略。RESB 10 とすると 10バイトあけておき 0x00で埋める
DW命令 「data word」の略。DB命令の仲間。2バイト分書く命令。
DD命令 「data double-word」の略。4バイト分書く命令

よく分からなかった箇所

バイナリエディタで入力した内容

バイナリエディタで、「000000 ~ 000082」に入力した内容は、ASCII表示部分の最後が "hello, world"になっているのでデータ部分だと思われる。

「0001FE ~ 000202」の "55 AA F0 FF FF" と、「001400 ~ 001402」の "F0 FF FF" というの昔何かで読んだことあったような気がするんだが忘れた。 ※一日目の最後にある用語解説の中に「55 AA」については記載されてました。   PCはまずディスクの最初のセクタを読み、その最後の2バイトが「55 AA」であればこのディスクに起動に必要なプログラムが書かれていると判断するとのこと。

バッチファイルの内容

run.bat ファイルの内容は以下の通り。

copy helloos.img ..\z_tools\qemu\fdimage0.bin
..\z_tools\make.exe -C ../z_tools/qemu

作成した helloos.img ファイルを fdimage0.bin というファイル名でコピーしているのは分かる。 その後の make.exe の -Cオプションが分からなかったので --help で調べてみた。

-C DIRECTORY, --directory=DIRECTORY
                              Change to DIRECTORY before doing anything.

qemu ディレクトリに移動してから make 実行ってことのよう。 ディレクトリ内にある Makefileが以下の内容なので、

ALL : 
    qemu.exe -L . -m 32 -localtime -std-vga -fda fdimage0.bin

フロッピーディスク(-fda)に fdimage0.bin をセットして qumuを起動しているってことかな。

身についたこと

感想

内容を読んで記載してある通りに進めていくだけならすいすいと進むんだが、何をやっているのか分かんないまま進んでいる感じ。 読み進めていけばこのモヤモヤが解消してくるんだろうか。

このペースだととても30日で終わりそうにないが、気長にやっていこうと思う。