Linuxで書くOS自作入門 1日目
「30日でできる!OS自作入門」を購入した.
- 作者: 川合秀実
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2006/03/01
- メディア: 単行本
- 購入: 36人 クリック: 735回
- この商品を含むブログ (299件) を見る
このブログでは、Linux(Ubuntu16.04)を使ってOSを書いてみようと思います.
バイナリ写経
イメージファイルのバイナリ写経する.Linuxにはbviとかghexといったバイナリエディタがあるので,触っては見たが,飽きたので完成物をコピーしてきた.
sudo apt-get install qemu
qemu-system-i386 helloos.img
ひとまず動作確認.
アセンブラ
先ほどのバイナリを生成させるためにアセンブラを用いる.この本では独自のアセンブラNASMが用いられているが,Linuxで使用できる標準的なものを使いたい.
調べてみると,NASKの元となっているNASMの他に,GNUアセンブラGasなどが主流であることが分かった.NASMはIntel構文,GasはAT&T構文といった構文の違いがあるらしい.1
移植の作業量が少ないため,ひとまずはNASMを用いていくことにした.
しばらくは同じバイナリを生成するアセンブリなので,helloos1を飛ばし,helloos2をコンパイルする.
- 新しいアセンブリ命令
DB
指定の1バイト記入 文字列も可 Data ByteDW
指定の2バイト記入 Data WordDD
指定の4バイト記入 Data Double-WordRESB
指定バイト数0で初期化 REServe Bytes
nasmのインストール
sudo apt-get install nasm
nasm helloos.asm helloos.img
実行すると,helloos.asm:41: error: invalid operand type
というエラー.
調べてみると,RESB 0x1fe-($-$$)
とすべきようだ.2
nasmでは,$
はその行のアドレス,$$
はそのセクションの最初のアドレスを指すらしい.
せっかくなので表示文字列を変えてコンパイル,リンク
今度は成功.
余談
アセンブル時の命令を
nasm helloos.asm helloos.img -l helloos.lst
と付け加えることで,
アセンブリに対するバイナリの対応を見ることができる.