os自作入門を手を動かしながら理解していく(1)

プログラミング
スポンサーリンク

os自作入門(30日でできる! OS自作入門 川合 秀実  (著))を手を動かしながら理解していきます。結構前に買ってあったのですが、naskに少し抵抗があって、ちょっとやっただけで積読状態になったので今回はnasmで進めていきたいと思います。

スポンサーリンク

やったこと

helloos.imgを作成してバーチャルボックスから起動した。

スポンサーリンク

環境など

windows8.1  cygwin バーチャルボックス nasm

cygwinにnasmはインストールされてなかったのでapt-cyg install nasm でインストールしました。
apt-cygを導入に関してはこの記事

スポンサーリンク

p24までに書いてあることのおおざっぱなまとめ

cpuはマシン語を処理する。
マシン語は0と1で構成されている。

スポンサーリンク

p24のコードをnasmに書き直したもの

p24のコードをnasmに書き直したものです。
「RESB 数」を「TIMES 数 DB 0」 とすればいいようです。

DB  0xeb, 0x4e, 0x90, 0x48, 0x45, 0x4c, 0x4c, 0x4f
DB  0x49, 0x50, 0x4c, 0x00, 0x02, 0x01, 0x01, 0x00
DB  0x02, 0xe0, 0x00, 0x40, 0x0b, 0xf0, 0x09, 0x00
DB  0x12, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00
DB  0x40, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x29, 0xff
DB  0xff, 0xff, 0xff, 0x48, 0x45, 0x4c, 0x4c, 0x4f
DB  0x2d, 0x4f, 0x53, 0x20, 0x20, 0x20, 0x46, 0x41
DB  0x54, 0x31, 0x32, 0x20, 0x20, 0x20, 0x00, 0x00
TIMES 16 DB 0
DB  0xb8, 0x00, 0x00, 0x8e, 0xd0, 0xbc, 0x00, 0x7c
DB  0x8e, 0xd8, 0x8e, 0xc0, 0xbe, 0x74, 0x7c, 0x8a
DB  0x04, 0x83, 0xc6, 0x01, 0x3c, 0x00, 0x74, 0x09
DB  0xb4, 0x0e, 0xbb, 0x0f, 0x00, 0xcd, 0x10, 0xeb
DB  0xee, 0xf4, 0xeb, 0xfd, 0x0a, 0x0a, 0x68, 0x65
DB  0x6c, 0x6c, 0x6f, 0x2c, 0x20, 0x77, 0x6f, 0x72
DB  0x6c, 0x64, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00
TIMES 368 DB 0
DB  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xaa
DB  0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
TIMES 4600 DB 0 
DB  0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
TIMES 1469432 DB 0

これだけ見ても何をやっているのかわかりません。

メイクファイルを作成してhelloos.imgをコンパイルしました。

helloos.img : helloos.nas
nasm $< -o $@
clean :
rm -f ./helloos.img
.PHONY : clean

メイクファイルの説明はこちらのサイトがわかりやすかった。
cygwinでコンパイルします。

helloos.imgができました。

helloos.imgをバーチャルボックスから起動してみます。

helloos.imgから自動で起動し文字列を表示できました。