5

現在、x86アセンブリ(r / m32、imm8)で負の数をテストするためにこれを行っています。

83F800 CMP EAX, 0

これにJLを続けることができます。これは3バイトで、おそらく「1/2」でクロックします。TESTEAXまたはCMPEAX、imm32(3Dをエンコード)を使用できます。どちらも「1」のクロックですが、5バイトかかります。一般に、コードサイズを最小化しようとしている場合、それを行う方法は正しいですか?繰り返しますが、これは数値がゼロ未満かどうかをテストするためのものです。

4

2 に答える 2

4

add eax, eaxはわずか 2 バイト (01 C0または03 C0) ですが、破壊的です。(持ち物は後で確認)

test eax, eaxも 2 バイトのみです ( 85 C0)。(後でサインを確認してください)

于 2013-03-16T19:40:54.167 に答える
4

以下を使用できます。

or      eax, eax

これは 1 バイト短い (2 バイトのオペコードのみ) 命令です!

于 2013-03-16T19:49:44.100 に答える