1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

OS自作 1日目

Posted at

#はじめに
「作って理解するOS」を進める際の自分用のメモ。
本書の前半の内容はプログラムを作りながら適宜参照する。

##環境設定
本にあるようにディレクトリの設定とqemuのダウンロード、バッチファイルの生成を行った。
とりあえずqemuが起動した。

##アセンブラの復習
アセンブリ言語で関数の呼び出し、メモリのコピーと比較を行うプログラムを作成した。
・関数を呼び出す前に引数がスタックにpushされる
・引数や定数へのアクセスはbpからの差分で行う

##何もしないブートプログラムの作成
無限ループするだけのブートプログラムを作成する
・ブートプログラムとは
 ・起動時にBIOSによって読み込まれるプログラム
 ・必要なプログラムをROMからメモリに順次ロードする
 ・指定されたROMの先頭512バイトがメモリの0x7C00番地にロードされる
・ブートプログラムは末尾の2バイトが0x55,0xAAである必要がある

##BIOSパラメータブロックの領域を確保
・512バイトの中には外部記憶の属性などのデータを保持する領域(BPB)がある
 ・プログラム(IPL)はBPBの後ろにあるのでブートプログラムの一行目はIPLへのジャンプ
・今回は90バイトをBPB用に確保する
 ・90バイト分はNOP(何もしない命令:0x90)で埋める

boot.s
entry:
    jmp ipl
    times 90 - ($- $$) db 0x90

ipl:
    jmp $     ;無限ループ

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?