質問: 画像のアセンブリのコードの、10行目でなぜ xor eax, eax となるのか詳しく教えてほしいです。 8行目、9行目でraxを使ったので xor rax, rax ではないのでしょうか。 よろしくおねがいします。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/5da700c65fb05d809a7158d96c0dfdb8.png)
回答: `xor eax, eax`は、`xor rax, rax`と同じ意味で短い機械語を生成します。 64ビットモードで`eax`を触ると、上位32ビットはゼロクリアされます。 そのため、`xor eax, eax`とすると、上位32ビットは`eax`を変更したことでゼロクリア、下位32ビットは`xor`演算によりゼロクリアとなり、結局`rax`の**全部がゼロクリア**されます。これは`xor rax, rax`と同じ結果です。