#はじめに
「作って理解するOS」を進める際の自分用のメモ。
本書の前半の内容はプログラムを作りながら適宜参照する。
##環境設定
本にあるようにディレクトリの設定とqemuのダウンロード、バッチファイルの生成を行った。
とりあえずqemuが起動した。
##アセンブラの復習
アセンブリ言語で関数の呼び出し、メモリのコピーと比較を行うプログラムを作成した。
・関数を呼び出す前に引数がスタックにpushされる
・引数や定数へのアクセスはbpからの差分で行う
##何もしないブートプログラムの作成
無限ループするだけのブートプログラムを作成する
・ブートプログラムとは
・起動時にBIOSによって読み込まれるプログラム
・必要なプログラムをROMからメモリに順次ロードする
・指定されたROMの先頭512バイトがメモリの0x7C00番地にロードされる
・ブートプログラムは末尾の2バイトが0x55,0xAAである必要がある
##BIOSパラメータブロックの領域を確保
・512バイトの中には外部記憶の属性などのデータを保持する領域(BPB)がある
・プログラム(IPL)はBPBの後ろにあるのでブートプログラムの一行目はIPLへのジャンプ
・今回は90バイトをBPB用に確保する
・90バイト分はNOP(何もしない命令:0x90)で埋める
entry:
jmp ipl
times 90 - ($- $$) db 0x90
ipl:
jmp $ ;無限ループ