step 2 - ブート
一日目、二日目のまとめ

 とりあえず、二日目のところまでは通してみました。 と言っても、本当になぞって通しただけの様な感じなので、 身につけるためにも書かれていた内容を簡単にまとめてみます。 一日目、二日目では大体下記の様な内容が書かれていた様に思えます。

どれも今必要になる分だけ、触りを簡単に触れられている程度なのですが、 全く知識のない人間にとっては調べるトリガになってありがたいです。 また、実際に動かしてから説明に入っているので取っつき易い面もあります。


ブートについて

 さて、まずはブートです。いまのところAT互換機(Windowsパソコン)では、 電源投入後、まずBIOSが起動してBIOSがディスクの読み出しを行って、 特定の領域をRAMに書き込んで実行していく様です。 本に書いてあったのはFD(FAT12フォーマット)からのブートですが、 書いてあったことを図示すると下記の様な感じでしょうか。


メモリに読み込まれた内容はその先頭から実行される様です。 が、頭から3バイト目以降数10バイト分はなんかヘッダの様な感じです。 実行の際にはその辺りをすっ飛ばして、実行部分までジャンプしていますね。 この辺りはまだ謎のままです。 また、ブートセクタの末尾2バイトはブートの可否のフラグとして用いられているとのことです。

実際に自分のOSをメディアに移す際、MacではFDへの書き込みはできないので、 CD-ROMやDVD-ROMからのブートの仕組みを調査する必要があります。 また、Intel Mac の様にBIOSがないものとかUSBブートとか言う物もある様ですし、 この辺りは最終的に何をターゲットにするかでまた調査し直す必要がありそうです。


レジスタについて

 二日目のところでレジスタについてさらっと説明してくれています。 読んでも覚えられそうにないので、とりあえず簡単な表にまとめとくことにします。

アキュムレータEAX
 AX
AHAL
各種計算に使用。
カウンタECX
 CX
CHCL
数のカウントに使用。
データEDX
 DX
DHDL
ベースEBX
 BX
BHBL
番地計算の基点、番地の指定に使用。
スタックポインタESP
 SP
ベースポインタEBP
 BP
番地の指定に使用。
ソースインデックスESI
 SI
番地の指定に使用。
デスティネーションインデックスEDI
 DI
番地の指定に使用。
エクストラセグメント ES
コードセグメント CS
スタックセグメント SS
データセグメント DS
 FS
 GS


naskとnasmの相違について

 本書のソースをほとんど修正せずに打ち込むことができていますが、 所々、警告とかエラーがでます。 著者の方がまとめてくれているページNASMのマニュアルページを 参考にして直していっています。

また、著者の方が、BIOSのファンクションメモリマップについても まとめてくれています。こういうのは非常に重宝しますね。


(2006/05/05)

ぐうたラボ...