遅まきながら、「30日でできるOS自作入門」を読み始めた。
といっても実は私が高校生くらいの時に購入して、GUIをいじりだしたあたりで挫折した記憶のある書籍である。 今回満を持してリベンジである。
- 作者: 川合秀実
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2006/03/01
- メディア: 単行本
- 購入: 36人 クリック: 735回
- この商品を含むブログ (299件) を見る
第0日、第1日の内容は、まあ慣れていることもあって理解できる。
第2日目のあたりで、IPLは理解はしているつもりだけど人に説明できるかというと怪しいので、少し掘り下げて理解しておきたい。 まだ一行も手を動かしていないけど。
Raspberry-Piとか、RISC-Vの実装とかも絡めていければいいかなと思っている。 UNIXの動作の何たるかについては、「はじめてのOSコードリーディング」を一応読破したので、「意味不明!」ということは無いはず。
どれくらい時間がかかるのかわからないけど、頑張ろう。
- 作者: 青柳隆宏
- 出版社/メーカー: 技術評論社
- 発売日: 2013/01/09
- メディア: 単行本(ソフトカバー)
- 購入: 56人 クリック: 1,959回
- この商品を含むブログ (29件) を見る
3日目のブートプログラム
helloos.nas を作って、実行した。実行環境は、 Ubuntu 上で nasm と qemu-system-i386 をインストールしてコンパイル、実行した。
run: helloos.img
qemu-system-i386 -fda $^
helloos.img: helloos.nas
nasm -o $@ $^
clean:
rm -rf helloos.img
- helloos.nas
ORG 0x7c00
JMP entry
DB 0x90
DB "HELLOIPL"
DW 512
DB 1
DW 1
DB 2
DW 224
DW 2880
DB 0xf0
DW 9
DW 18
DW 2
DD 0
DD 2880
DB 0,0,0x29
DD 0xffffffff
DB "HELLO-OS "
DB "FAT12 "
RESB 18
; Main Program
entry:
mov ax, 0
mov ss, ax
mov sp, 0x7c00
mov ds, ax
mov es, ax
mov si, msg
putloop:
mov al, [si]
add si, 1
cmp al, 0
je fin
mov ah, 0x0e
mov bx, 15
int 0x10
jmp putloop
fin:
hlt
jmp fin
msg:
DB 0x0a, 0x0a
DB "hello, world"
DB 0x0a
DB 0
RESB 0x1fe-($-$$)
DB 0x55, 0xaa
DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
RESB 4600
DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
RESB 1469432
図. 第3日。IPLが動作した様子。