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から自動で起動し文字列を表示できました。