遅まきながら、「30日でできるOS自作入門」を読み始めた。
といっても実は私が高校生くらいの時に購入して、GUIをいじりだしたあたりで挫折した記憶のある書籍である。 今回満を持してリベンジである。
- 作者: 川合秀実
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2006/03/01
- メディア: 単行本
- 購入: 36人 クリック: 735回
- この商品を含むブログ (299件) を見る
第0日、第1日の内容は、まあ慣れていることもあって理解できる。
第2日目のあたりで、IPLは理解はしているつもりだけど人に説明できるかというと怪しいので、少し掘り下げて理解しておきたい。 まだ一行も手を動かしていないけど。
Raspberry-Piとか、RISC-Vの実装とかも絡めていければいいかなと思っている。 UNIXの動作の何たるかについては、「はじめてのOSコードリーディング」を一応読破したので、「意味不明!」ということは無いはず。
どれくらい時間がかかるのかわからないけど、頑張ろう。
はじめてのOSコードリーディング ~UNIX V6で学ぶカーネルのしくみ (Software Design plus)
- 作者: 青柳隆宏
- 出版社/メーカー: 技術評論社
- 発売日: 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が動作した様子。