JS 在 Assembly x86 中做什么?

问题描述 投票:0回答:1
cmp %al, %cl
js x

我对 js(跳转标志)正在做什么感到困惑。是不是说如果al为正,cl为负,反之则跳?

另外,如果

%cl
为 0 会发生什么?

assembly x86 att
1个回答
24
投票
如果设置了符号标志(通过较早的指令),

JS
将跳转。 CMP 始终会通过执行减法来修改标志,在本例中为
%cl - %al

(这是 AT&T 语法,所以
cmp %al, %cl
与 Intel 语法
cmp cl, al
相同)

由于指令的操作数大小,符号将是表达式

%cl-%al
的第 7 位(它被丢弃;EFLAGS 的更新就像
sub
一样,但不是
al
。)

如果

al == 0
,则临时值将恰好为
cl
,符号将是寄存器
cl
的符号。因此,如果
cl
为负,则进行跳跃。

这是所有条件跳转的参考

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.