1. ホーム
  2. c

[解決済み] xorl %eax - IA-32 の命令セット・アーキテクチャ

2022-02-07 19:49:13

質問

この演習を理解するのに苦労しています。

このアセンブリのスニペットでxorlは具体的に何をするのですか?

Cコードです。

int i = 0;
if (i>=55)
    i++;
else
    i--;

組立

xorl ____ , %ebx
cmpl ____ , %ebx
Jel  .L2
____ %ebx
.L2:
____ %ebx
.L3:

組み立ての部分はどうなっているのでしょうか?

解決方法は?

それはおそらく

xorl %ebx, %ebx

これは、x86でレジスタをゼロにするための一般的なイディオムです。これは次のように対応します。 i = 0 をC言語のコードに置き換えたものです。


しかし、なぜなのか? xor 命令より少ないバイト数で mov $0, %ebx . 長い答えは、他の微妙な理由を含んでいます .

残りの演習は、特質的なものが残っていないので省きます。