OS自作 1日目
はじめに
「作って理解する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 $ ;無限ループ
Author And Source
この問題について(OS自作 1日目), 我々は、より多くの情報をここで見つけました https://qiita.com/Tuffy/items/c08865270de519d7619b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .