-1

gcc コンパイル バイナリには、次のアセンブリがあります。

 8049264:   8d 44 24 3e             lea    0x3e(%esp),%eax          
 8049268:   89 c2                   mov    %eax,%edx                
 804926a:   bb ff 00 00 00          mov    $0xff,%ebx               
 804926f:   b8 00 00 00 00          mov    $0x0,%eax                
 8049274:   89 d1                   mov    %edx,%ecx                
 8049276:   83 e1 02                and    $0x2,%ecx                
 8049279:   85 c9                   test   %ecx,%ecx
 804927b:   74 09                   je     0x8049286

一見しただけでは、何をしているのかまったくわかりませんでした。私の最善の推測は、ある種のメモリアラインメントとローカル変数のクリアです (ローカル変数の場所で rep stos が 0 を埋めているため)。最初の数行を見ると、アドレスを eax にロードして ecx に移動し、偶数アドレスかどうかをテストしますが、なぜこれが起こっているのかわかりません。ここで何が起こっているのか正確に知りたいです。

4

1 に答える 1