xorl%eax - IA-32中的指令集架构

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. 长答案包括其他微妙的原因.

由于没有任何特殊的东西,我将其余的练习遗漏掉.