0

我在学习 x86-64 时对条件分支感到很困惑。

compq %rax,%rdi
jl .L2

哪一个是正确的理解?

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

1 回答 1

1

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

使用 Intel 语法时会更清楚,因为 AT&T 交换了目标和源,这在指令上会更加混乱,例如cmpsub

cmp rdi, rax
jl .L2

Jcc 指令总是将第一个操作数与第二个操作数进行比较。在这种情况下,它会在 rdi < rax 时跳转

于 2018-09-16T10:28:56.467 回答