2010年12月23日木曜日

GASでOS自作入門- 一日目

家で眠っていた「OS自作入門」という本。デバイスまわりが苦手な私にとって
バイブルとなるはずだったのだが…
この本での開発環境が Windows + NASM ということから、モチベーションと
私の 3 日坊主という性格も手伝い、本棚にそのまま置き去りに。

しかし、長期休暇を利用して再度チャレンジと意気込み、同じことを GAS で
やってみようと思い立ち Web を検索していたら以下のページを発見。

http://d.hatena.ne.jp/big-eyed-hamster/

全く同じことをやっている方がいて、跡追いながら、この big-eyed-hamster
様をカナーリ参考にし、私のブログにその勉強メモを記しておこうと思います。

まず、そもそも NASM と GAS では命令が全く違うのでその対比を。

命令内容NASMGAS
1バイト書込DB.byte, 文字列の場合は .ascii?
2バイト書込DW.word
4バイト書込DD.int
指定バイト空けるRESB.skip, .org?

んで、出来上がった 01_day/helloos2/helloos.nas に相当するのが↓これ。
 # big-eyed-hamster さんと同じです。すみません。

  helloos.s

以下でアセンブル。なお、私の手元のマシンは amd64 なので一応 32bit オプション
付き。

 as --32 helloos.s -o helloos-32.img

そして、big-eyed-hamster さんの仰るとおり、これは ELF なので ELF のヘッダ
を切る。なお、ヘッダサイズはまんまですが readelf -h で確認済み。

 dd if=helloos-32.img of=helloos-32-noelf.img bs=1 count=52

ちなみに amd64 のバイナリでアセンブルした場合は ELF ヘッダは 64byteでした。

0 件のコメント:

コメントを投稿