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日で終わりそうにないが、気長にやっていこうと思う。