我在研究x86-64的时候对条件分支很困惑。
compq %rax,%rdi
jl .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时它会跳转