JS在Assembly x86中做了什么?

时间:2014-02-19 06:00:55

标签: assembly x86

cmp %al, %cl
js x

我对js(跳号)正在做什么感到困惑。它是说如果al是正的而cl是负的则反之亦然然后跳?

此外,如果%cl为0或者没有任何内容,会发生什么?

谢谢!

1 个答案:

答案 0 :(得分:12)

如果设置了sign标志(由之前的指令),

JS将跳转。 CMP将始终通过执行减法修改标志,在本例中为%al - %cl。 (假设是英特尔语法,而不是AT& T)。

由于指令的长度,符号将是表达式%al-%cl的第7位(并且被扔掉)。

如果%cl == 0,那么临时值将完全为%al,符号将是寄存器%al的符号。因此,如果%al为负,则进行跳转。

这是所有条件跳转的reference