最简洁的方法来测试x86汇编中的负数?

时间:2013-03-16 19:32:20

标签: assembly x86

目前我这样做是为了测试x86程序集中的负数(r / m32,imm8):

83F800 CMP EAX, 0

这可以是JL。这是3个字节,据说时钟为“1/2”。我可以使用TEST EAX,或CMP EAX,imm32(编码3D),两者的时钟均为“1”,但需要5个字节。一般来说,如果我试图最小化代码大小,我的方式是正确的吗?再次,这是测试一个数字是否小于零。

2 个答案:

答案 0 :(得分:4)

您可以使用:

or      eax, eax

它是一个字节更短(只有两个字节的操作码)指令!

答案 1 :(得分:3)

add eax, eax只有两个字节(01 C003 C0),但具有破坏性。 (随后检查随身携带)

test eax, eax也只有两个字节(85 C0)。 (之后检查标志)