x86-64的条件跳转如何工作?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了x86-64的条件跳转如何工作?相关的知识,希望对你有一定的参考价值。

我在研究x86-64的时候对条件分支很困惑。

compq %rax,%rdi
jl .L2

哪一个是正确的理解?

  1. 如果%rax <%rdi,跳转到L2
  2. 如果%rax>%rdi,跳转到L2
答案

在x86-64中没有compq。在比较AT&T语法中的64位操作数时,CMP将是cmpq

使用英特尔语法时会更清楚,因为AT&T交换的目的地和来源将是more confusing on instructions like cmp and sub

cmp rdi, rax
jl .L2

Jcc instructions总是比较第一个操作数和第二个操作数。在这种情况下,当rdi <rax时它会跳转

以上是关于x86-64的条件跳转如何工作?的主要内容,如果未能解决你的问题,请参考以下文章

如何计算程序(或函数调用)中两点之间执行的 x86-64 指令的数量?

x86-64 GAS Intel 语法中的 RIP 相对变量引用(如“[RIP + _a]”)如何工作?

2018-2019-1 20165304 《信息安全系统设计基础》第四周学习总结

第四周学习总结

-bash: /usr/bin/ls: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory(代码片段

X.86 X64 汇编器中的正确堆栈操作