バイブルとなるはずだったのだが…
この本での開発環境が Windows + NASM ということから、モチベーションと
私の 3 日坊主という性格も手伝い、本棚にそのまま置き去りに。
しかし、長期休暇を利用して再度チャレンジと意気込み、同じことを GAS で
やってみようと思い立ち Web を検索していたら以下のページを発見。
http://d.hatena.ne.jp/big-eyed-hamster/
全く同じことをやっている方がいて、跡追いながら、この big-eyed-hamster
様をカナーリ参考にし、私のブログにその勉強メモを記しておこうと思います。
まず、そもそも NASM と GAS では命令が全く違うのでその対比を。
命令内容 | NASM | GAS |
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 件のコメント:
コメントを投稿