1

私はアセンブリの初心者で、この行を理解しようとしています:

mov $0x80484e0,%ebx  // what the hell means this value: 0x80484e0?
mov $0x1b,%eax   // writing 27 in %eax
mov %edx,%edi    // ? %edx is not used until not, why reading from there?
mov %ebx,%esi    // why not like this: mov $0x80484e0,%esi
mov %eax,%ecx    // writing 27 in counter-register, but same questen like one line before
rep movsl %ds:(%esi),%es:(%edi) // repeat 27 times: copy 32 bit word from %ds:(%esi) to %es:(%edi)

しかし、%ds:(%esi),%es:(%edi) の意味は何ですか? この行は何かをコピーする必要があることを知っています。しかし、最も重要な問題は、値 0x80484e0 の意味です。

4

1 に答える 1

1

$0x80484e00x80484e0数値の 16 進数表現であるリテラル値を意味します。それはおそらく何かのアドレスです。これ以上のコードがなければ、その意味を理解するのは困難です。

2 番目の質問は、なぜ esi に直接移行しないのかということです。いくつかの可能性があります。1 つは、コードが後で ebx の値を使用するため、そのコピーを作成することをお勧めします。命令はmovslesi と edi を変更します。

于 2013-06-10T03:06:58.010 に答える