[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[OSASK 2645] Re: About NASM.




Hidemi さん、こんにちは。I.Tak. です。

Sun, 09 Dec 2001 06:35:23 -0000 の
[OSASK 2636] Re: About NASM.
に返信です。

>ろ試していたら上位bitはundefinedだと説明されていました。ちなみに
>逆はどうなんでしょうか?MOV(DS,AX);もプリフィクスが必要なんです
>か?(NASMは0x66が付きますが)。

 なんにせよaxしか関係ないのに、mov ds,eax にしないと32ビット命令
になりません。NASMはセグメントレジスタ関係を「32ビットオペランドを
扱うなら32ビット、そうでないなら16ビット」と解釈しているようです
(pushの場合、暗黙のオペランドとして bits で指定したサイズの[esp]が
解釈されるようです)。ああそういえば mov eax,cs よりも push cs の
方が一バイト小さくなるようですから、こっちにしません?
 ちなみに私はNASMばかり使っているので、ax を見た時点で16ビット
命令に見えてしまいます(^^;

 ところで、VCやMASMが吐くオブジェクトってCOFFなんですか?
NASMのマニュアルには「Win32オブジェクトはマイクロソフト社がCOFFと
互換性があると主張するフォーマットだ」とか「COFFの一般的な拡張子は
oだ」と書いてありましたが(個人的にはMS社が自社以外のフォーマットを
使うとは思えません)。


 出力フォーマットの問題で(UNIXはFLATですから)全く関係ないんですが、
gasはジャンプ関係をちゃんと小さく出力してくれます。

------------------------------------------------------------
I.Tak. <msy !Atmark! catvmics.ne.jp>
http://home1.catvmics.ne.jp/~msy/takhome.htm