「作って理解するOS」でmingw-w64用のプログラムを書いてみた
「作って理解するOS」という書籍はNASMでプログラムが書かれているのですが、そのプログラムをmingw-w64用に書いてみたという記事です。
まだ14章12節までしかプログラムをしていないのですが、最初のブートプログラムをイメージファイルにする箇所に時間がかかったので、参考として記事に残しておきます。
コマンドと単純なブートプログラムだけを記事に書きます。ちなみにコマンドはwindowsを想定しています。
コマンドは下の3つを順番に実行してください。
c:\mingw64\bin\as.exe boot.s -o boot.o -a > boot.lst
c:\mingw64\bin\ld.exe boot.o -o boot.tmp -Ttext=0x7c00 -T NUL
c:\mingw64\bin\objcopy.exe -O binary boot.tmp boot.img
Aという出力をするブートプログラムを下に載せます。
// boot.s
.code16
.equ boot_load,0x7c00
.equ start_load,0x0000
.org start_load
entry:
jmp ipl
bpb:
.fill 90-(.-entry),1,0x90
ipl:
cli
movw $0x0000,%ax
movw %ax,%ds
movw %ax,%es
movw %ax,%ss
movw boot_load,%sp
movb %dl,boot_drive
movb $'A',%al
movb $0x0e,%ah
movw $0x0000,%bx
int $0x10
jmp .
.balign 2
boot_drive:
.word 0x0000
.fill 510-(.-entry),1,0x00
.byte 0x55
.byte 0xaa