我在学习 x86-64 时对条件分支感到很困惑。
compq %rax,%rdi
jl .L2
哪一个是正确的理解?
- 如果 %rax < %rdi,跳转到 L2
- 如果 %rax > %rdi,跳转到 L2
我在学习 x86-64 时对条件分支感到很困惑。
compq %rax,%rdi
jl .L2
哪一个是正确的理解?
x86-64 中没有compq
。在比较 AT&T 语法中的 64 位操作数时,会有CMP 。cmpq
使用 Intel 语法时会更清楚,因为 AT&T 交换了目标和源,这在指令上会更加混乱,例如cmp
和sub
cmp rdi, rax
jl .L2
Jcc 指令总是将第一个操作数与第二个操作数进行比较。在这种情况下,它会在 rdi < rax 时跳转