有很多变种如何使用移动,但是用什么来写?
mov %ecx,0x8(%edi)
答案 0 :(得分:1)
问题1:价值或地址?我对你的意思感到困惑,所以我只会解释mov %ecx, 0x8(%edi)
的作用。 ecx
中的值将存储在内存位置 [edi + 8]中。因此,如果ecx
保持值42,则在执行此命令后,您将在内存中的[edi + 8]处看到值42。此代码的C等效项为:*(((char*) edi) + 8) = ecx;
问题2:寄存器可以在堆栈中保留一个位置,但它没有。它可以容纳任何适合它的东西,无论是几个字符,整数,指针等等。
问题3: mov (%edi), eax
正在移动内存位置edi
的值。您解除引用 edi
。等效的C代码为eax = *edi
。mov %edi, eax
正在移动edi
中的值。等效的C代码为eax = edi
。
注意:请查看Ol'Wumpus对我未提及的一些重要信息的评论。