Hél*_*ira 5 c x86 assembly instruction-set att
我在解释这个练习时遇到了一些困难;
xorl在这个程序集片段中做了什么?
C代码:
int i = 0;
if (i>=55)
i++;
else
i--;
Run Code Online (Sandbox Code Playgroud)
部件
xorl ____ , %ebx
cmpl ____ , %ebx
Jel .L2
____ %ebx
.L2:
____ %ebx
.L3:
Run Code Online (Sandbox Code Playgroud)
装配部分发生了什么?
cni*_*tar 15
它可能是:
xorl %ebx, %ebx
Run Code Online (Sandbox Code Playgroud)
这是将x86上的寄存器归零的常用习惯用法.这与i = 0C代码相对应.
如果你很好奇"但为什么?" 简短的回答是xor指令的字节数少于mov $0, %ebx. 长答案包括其他微妙的原因.
由于没有任何特殊的东西,我将其余的练习遗漏掉.