目前我这样做是为了测试x86汇编(r/m32,imm 8)中的负数:
83F800 CMP EAX, 0
这可以跟在JL后面。这是3个字节,假设时钟为“1/2”。我可以使用TEST EAX,或CMP EAX,imm 32(编码3D),这两个时钟都为“1”,但需要5个字节。一般来说,如果我试图最小化代码大小,我这样做是正确的吗?再次,这是为了测试一个数字是否小于零。
bjg7j2ky1#
add eax, eax只有两个字节(01 C0或03 C0),但具有破坏性。(随后检查进位)test eax, eax也只有两个字节(85 C0)。(之后检查符号)
add eax, eax
01 C0
03 C0
test eax, eax
85 C0
thigvfpy2#
您可以使用:
or eax, eax
这是一个字节短(只有两个字节的操作码)的指令!
2条答案
按热度按时间bjg7j2ky1#
add eax, eax
只有两个字节(01 C0
或03 C0
),但具有破坏性。(随后检查进位)test eax, eax
也只有两个字节(85 C0
)。(之后检查符号)thigvfpy2#
您可以使用:
这是一个字节短(只有两个字节的操作码)的指令!