我是装配的初学者,我正在努力理解这一点:
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的含义。
答案 0 :(得分:1)
$0x80484e0
表示文字值0x80484e0
,它是数字的十六进制表示。它很可能是某些东西的地址。没有更多的代码,很难帮助你理解它。
第二个问题为什么不直接转到esi?有几种可能性:一种是代码稍后使用ebx中的值,因此最好复制它。 movsl
指令更改了esi和edi。