我想知道测试指令是否可以和cmp一样使用。让我们说:
cmp %eax,%ebx
jg some_random_place如果%ebx大于%eax,则跳到some_random_place,如果我这样做的话:
test %eax, %ebx
jg some_random_place在什么条件下跳?
发布于 2014-03-04 21:02:19
不是的!
cmp %eax,%ebx实例类似于sub %eax,%ebx指令,但是对于cmp指令,除了标志寄存器之外,执行后寄存器保持不变。
test %eax,%ebx实例类似于and %eax,%ebx指令,但是对于test指令,除了标志寄存器之外,执行后寄存器保持不变。受影响的标志是进位= 0,零= x,Overflow=0和符号=x。
jg指令应该执行跳转,如果零标志=0,符号标志=溢出
所以万一..。
test %eax, %ebx
jg some_random_place如果...the跳转的结果为正,而不是0,则应执行and %eax,%ebx跳转。
https://stackoverflow.com/questions/22178457
复制相似问题