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 次 |
| 最近记录: |