测试工作和cmp一样吗?

时间:2014-03-04 17:11:08

标签: x86 att

我想知道测试指令是否可以和cmp一样使用。让我们说:

cmp %eax,%ebx
jg some_random_place

如果%ebx大于%eax,则跳转到some_random_place,现在如果我这样做:

test %eax, %ebx
jg some_random_place

跳跃的条件是什么?

1 个答案:

答案 0 :(得分:3)

没有!

cmp %eax,%ebx指令与sub %eax,%ebx指令类似,但在cmp指令处执行后的寄存器保持不变,除了标志寄存器。

test %eax,%ebx指令与and %eax,%ebx指令类似,但在test指令处执行后的寄存器保持不变,除了标志寄存器。 被感知的标志是Carry = 0,Zero = x,Overflow = 0和Sign = x

如果零标志= 0且符号标志=溢出

,则jg指令应执行跳转

以防万一...

test %eax, %ebx
jg some_random_place

...如果and %eax,%ebx的结果为正且不为0,则应执行跳转。