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