【发布时间】:2013-08-08 10:00:55
【问题描述】:
我相信在 x86 中实现跳转的标准方法是与以下内容进行比较:
cmpl %ebx, %eax
它将结果存储在 eflags 寄存器中,然后下面的跳转命令使用该 eflags 寄存器:
je some_label
但是如果我想保存比较的结果以便以后进行跳转怎么办?我想过做类似的事情:
cmpl %eax, %ebx
je storetrue
storefalse:
pushl $0
jmp done
storetrue:
pushl $1
done:
...
我需要这样做还是有不需要额外跳转的更直接的方法?
【问题讨论】:
-
使用conditional move 指令。
-
这很有用,但没有准确解释在复制(部分)标志寄存器时如何得出比较结果
-
有条件的移动正是我想要的,谢谢。
-
还有SETcc