Assembly 汇编代码指令

Assembly 汇编代码指令,assembly,x86,Assembly,X86,手术是什么 movl(%esi,%ecx,4),%eaxdo 据我所知,它将存储在%eax中,相当于%ecx*4+%esi在英特尔语法中相当于以下内容: mov eax,[esi + ecx*4] 它将从由esi+ecx*4形成的地址处的内存中读取32位,并将该值放入eax中,这在英特尔语法中相当于以下内容: mov eax,[esi + ecx*4] 它将从由esi+ecx*4形成的地址处的内存中读取32位,并将该值放入eax是的,您正在写入。 它被称为索引寻址模式 它的语法是: <

手术是什么

movl(%esi,%ecx,4),%eax
do


据我所知,它将存储在
%eax
中,相当于
%ecx*4+%esi

在英特尔语法中相当于以下内容:

mov eax,[esi + ecx*4]

它将从由
esi+ecx*4
形成的地址处的内存中读取32位,并将该值放入
eax

中,这在英特尔语法中相当于以下内容:

mov eax,[esi + ecx*4]
它将从由
esi+ecx*4
形成的地址处的内存中读取32位,并将该值放入
eax

是的,您正在写入。
它被称为索引寻址模式

它的语法是:

<constant1/label> (%reg1, %reg2, constant2)
然后你可以写

movl    $2,    %eax                # Move the index into %eax
movl    arr( , %eax, 4),    %edx
这意味着:
%edx=arr+%eax*4
。i、 e.基址+8字节。
您可能会认为它像
%edx=arr[2]

一般来说,

如果全局数组具有标签,则可以使用
label
作为基址。
如果您有一个本地数组,则使用
%reg2
作为基址。
如果您有一个包含数组的全局结构,那么您可以同时使用包含成员数组字节偏移量的结构+
%reg2
label

这就是通常发生的事情。。。但这取决于具体情况……

是的,你在写。
它被称为索引寻址模式

它的语法是:

<constant1/label> (%reg1, %reg2, constant2)
然后你可以写

movl    $2,    %eax                # Move the index into %eax
movl    arr( , %eax, 4),    %edx
这意味着:
%edx=arr+%eax*4
。i、 e.基址+8字节。
您可能会认为它像
%edx=arr[2]

一般来说,

如果全局数组具有标签,则可以使用
label
作为基址。
如果您有一个本地数组,则使用
%reg2
作为基址。
如果您有一个包含数组的全局结构,那么您可以同时使用包含成员数组字节偏移量的结构+
%reg2
label


这就是通常发生的事情。。。但这取决于具体情况…

请注意,您可以使用
objdump-d-M Intel
获取
objdump
以输出英特尔语法。请注意,您可以使用
objdump-d-M Intel
获取
objdump
以输出英特尔语法