1
cmp word ptr ds:[0], 0AA55h

組み立てて objdump すると、次のようになります。

67 81 3d 00 00 00 00    addr32 cmpw $0xaa55,0x0
55 aa

addr32 がここにあるのはなぜですか? AT&T (GAS) 構文で行ったのと同じことを行うことを意味します。

cmpw    $0xAA55, %ds:0

これは、次のように反論しました。

81 3e 00 00 55 aa       cmpw   $0xaa55,0x0

ファイルの先頭にありuse16、これを除いて、ほとんどすべてが問題ないようです。

4

1 に答える 1

1

その理由は、実際には JWASM で .i386 (またはそれ以上) ディレクティブを指定したためだと思います。Intel 80386 は 32 ビット CPU であったため、32 ビット コードが生成されます。

実際の 16 ビット コードをアーカイブするために、このコードを .i286 ディレクティブでコンパイルしてみてください。

于 2013-10-12T17:11:21.020 に答える