1
これは私が遭遇した動作の例です。使用アセンブラが32ビットコードを出力しないようです
[BITS 32]
mov eax, 0x1234
:
次のプログラムの組み立て
nasm -f bin in.asm -o out.bin
を、私は以下のバイナリ出力を得る:
B8 34 12 00 00
B8が 'EAXに移動' のオペコードですし、それは32ビットの値をとり、そこに入れなければなりません(つまり、ちょうどB8 34 12
でなければなりません)。しかし、代わりに00 00
を64ビット値のように置いています。
他のアセンブラを試していないので、これがNASM固有の問題であるかどうかわかりません。
くそーを生成するために組み立てた(その後、進にダンプ)することができ、カウンタの例として、
考えてみましょう、あなたは正しいです。 10分以上待ってから回答を受け入れることはできません... – almosnow
フラットバイナリを作成していない場合は、 '-felf64'などを使用する必要があり、' [bits 64] 'が冗長になります。 '[bits 32]'は、32ビットのマシンコードを64ビットのオブジェクトファイルにアセンブルさせますが、それは通常は役に立ちません。 –
@PeterCordesは、最新のものよりもわずか数秒前に無関係なコメントを削除していなければなりません。間違いなく「NOT」を逃したか? –