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的条件跳转如何工作?的主要内容,如果未能解决你的问题,请参考以下文章