assembly subq如何为像JLE这样的分支设置标志?哪个寄存器必须更大才能跳转?

时间:2018-02-22 00:49:46

标签: assembly x86 att

如果我们这样做:

subq %rbx, rax
jle somewhere

如果rbx小于或等于rax或rbx大于或等于rax,这是否意味着跳跃?

1 个答案:

答案 0 :(得分:2)

您可能对AT& T语法感到困惑 在Intel语法中,这两条指令看起来像

sub rax, rbx      ; subq %rbx, rax
jle somewhere     ; Jump if LESS-OR-EQUAL

Intel表示法的一个主要优点是,您可以轻松派生比较运算符。在这种情况下,这看起来像

IF rax <= rbx     ; IF rax LESS-OR-EQUAL rbx    
THEN JUMP target  ; DO THE JUMP IF YES

这可以作为经验法则使用 因此,如果先前条件为Jcc,则采用条件JUMP TRUE