x86-64 的条件跳转如何工作?
How does conditional jump of x86-64 works?
我在学习 x86-64 时对条件分支很困惑。
compq %rax,%rdi
jl .L2
哪个理解正确?
- 如果 %rax < %rdi,跳转到 L2
- 如果 %rax > %rdi,跳转到 L2
x86-64 中没有 compq
。在比较 AT&T 语法中的 64 位操作数时,CMP 将是 cmpq
。
使用 Intel 语法时会更清楚,因为 AT&T 交换了目的地和来源,这将是 more confusing on instructions like cmp
and sub
cmp rdi, rax
jl .L2
Jcc instructions 总是比较第一个操作数和第二个操作数。在这种情况下,它会在 rdi < rax
时跳转
- What does JL mean in at&t syntax?
我在学习 x86-64 时对条件分支很困惑。
compq %rax,%rdi
jl .L2
哪个理解正确?
- 如果 %rax < %rdi,跳转到 L2
- 如果 %rax > %rdi,跳转到 L2
x86-64 中没有 compq
。在比较 AT&T 语法中的 64 位操作数时,CMP 将是 cmpq
。
使用 Intel 语法时会更清楚,因为 AT&T 交换了目的地和来源,这将是 more confusing on instructions like cmp
and sub
cmp rdi, rax
jl .L2
Jcc instructions 总是比较第一个操作数和第二个操作数。在这种情况下,它会在 rdi < rax
时跳转- What does JL mean in at&t syntax?