Cha*_*891 4 x86 assembly x86-64 eflags
如果部分汇编代码如下:
xor %ebp,%ebx
jle some address
Run Code Online (Sandbox Code Playgroud)
这个 jle 是否意味着它会在 (%ebx ^ %ebp == 0) 时跳转,因为这会将 ZF 设置为 1?
这是 JLE 实现的方式之一。另一个是SF=? OF
,根据手册:https :
//www.felixcloutier.com/x86/jcc
由于 XOR 总是清除 OF,因此SF != OF
简化为 SF。
jle
在布尔运算之后将被采用 if SF | ZF
,即如果结果是<= 0
.
有趣的优化,以避免test %ebx,%ebx
将结果与零进行比较(AND 或 TEST 相同,相同将 FLAGS 设置为相同cmp reg,0
)。
归档时间: |
|
查看次数: |
176 次 |
最近记录: |