OSを作ってみよう day008

2013-12-02

OSを作ってみよう day008

「OS自作入門」の二日目に突入。今のペースだと全部終わる頃には420日かかる計算だが・・・((((;゚Д゚))))ガクガクブルブル   引き続きアセンブラの解説が続く。サンプルプログラムはやはり0埋め命令の範囲指定の箇所がコンパイルエラーとなる。 Macのnasmでコンパイルする時は、その箇所を修正してやる必要有り。(コードのdiffは省く)   二日目の主眼はアセンブラの解説である、もとより一度で暗記できる訳もないのでサラッとソースを読んで、サンプルコードをnasmでコンパイルできたらクリアとしよう。

MakeFile

このままではMacで動かないので、大胆に修正してみた。

1
2
3
4
5
6
7
8
9
10
11
12
13
# デフォルト動作
default :
make img

# コマンド
img :
nasm -f bin -o helloos.img ipl.nas

install :
dd if=helloos.img of=/dev/disk1s1 bs=512k

clean :
rm helloos.img

ipl.nasも範囲指定箇所が、例によってエラーになるので、下記の用に修正

1
2
3
4
5
$ diff ipl.nas ipl.nas~  | nkf -w
58c58
<              RESB    376             ; 0x7dfeまでを0x00で埋める命令
---
>               RESB    0x7dfe-$                ; 0x7dfeまでを0x00で埋める命令

最後は、makeでイメージ作成と、USB焼きこみまで。 ※/dev/disk1s1は、環境に応じて変えること。

1
2
3
4
5
6
7
8
9
10
$ make
make img
nasm -f bin -o helloos.img ipl.nas
ipl.nas:27: warning: uninitialised space declared in .text section: zeroing
ipl.nas:58: warning: uninitialised space declared in .text section: zeroing
$ sudo make install
dd if=helloos.img of=/dev/disk1s1 bs=512k
0+1 records in
0+1 records out
512 bytes transferred in 0.000867 secs (590455 bytes/sec)

eeepc901で動作確認OK!m9っ`Д´) ビシッ!! どうも、この辺までは大分慣れた感じ。   アセンブラに関しては、良さそうなサイトを見つけたのでリンクを貼っておく。困ったら読みに行こう。  WIKIBOOKS - X86アセンブラ   ついでに色々と疑問をぐぐっていると、こんなページに辿り着いた x86-64とは 【 AMD64 】 - 意味/解説/説明/定義 : IT用語辞典 x86とは、CPUの命令セットであるというのは、何度も色んな所で目にしたし、理解していたつもりだったが、アセンブラを書いてみて、コンパイルして初めてその意味を きちんと理解できた気がする。ちなみにx86-64というのは、後方互換を考えた64bit対応CPUと言うことなのだね。うーむ、勉強になる。