Assembly mov[ebx+;0x18]ecx做什么?
这个指令是做什么的?Assembly mov[ebx+;0x18]ecx做什么?,assembly,x86,Assembly,X86,这个指令是做什么的? 我不明白[ebx+0x18]在做什么?因为ebx不是地址,而是寄存器,所以请帮助我^^我假设指令是mov[ebx+0x18],ecx 这是Intel语法,其中方括号表示内部的值被取消引用,就像它是指针一样。在这种情况下,将恒定偏移量0x18添加到存储在ebx寄存器中的值,然后将其解释为随后被解引用的内存地址 因此,指令将存储在ecx中的值复制到ebx+0x18指向的内存中 请注意,ebx和ecx寄存器的实际内容不仅在地址ebx+0x18处的内存中修改,mov指令如下: mo
我不明白[ebx+0x18]在做什么?因为ebx不是地址,而是寄存器,所以请帮助我^^我假设指令是
mov[ebx+0x18],ecx
这是Intel语法,其中方括号表示内部的值被取消引用,就像它是指针一样。在这种情况下,将恒定偏移量0x18
添加到存储在ebx
寄存器中的值,然后将其解释为随后被解引用的内存地址
因此,指令将存储在ecx
中的值复制到ebx+0x18
指向的内存中
请注意,
ebx
和ecx
寄存器的实际内容不仅在地址ebx+0x18
处的内存中修改,mov
指令如下:
mov <destination>, <source>
操作数周围的括号表示使用解引用,即查看特定寄存器中的地址,并将其用作源或目标。要将EBX指向的内存中的位置设置为ECX的值,请执行以下操作:
mov [ebx], ecx
mov [ebx + 0x18], ecx
最后,在解引用时,可以做一些基本的算术运算。因此,要将位置0x18
(或24)字节从EBX指向的位置向前设置为ECX的值:
mov [ebx], ecx
mov [ebx + 0x18], ecx
EBX可以包含一个地址…它是在增加EBX中的地址吗?它正在访问由
EBX
持有的内存地址,偏移量是24
。偏移量是字节吗?@assemblerMan没有位寻址,地址是字节,偏移量也是字节。0x18偏移量是字节还是位?@assemblerMan也没有。0x18只是一个偏移量,所以它只是一个数字,当添加到地址时,会生成一个地址。如前所述,X+O
产生由X和O之和给出的地址(例如0x100+0x18=0x118)。现在,x86体系结构中的地址代表什么?一位、一个字节、一个单词?@assemblerMan正如玛格丽特所解释的,它实际上只是在添加数字。在这种情况下,我认为可以肯定地说地址指的是字节位置,因此字节偏移量比EBX指向的位置提前24字节。还有一个问题,libc-2.11.2.so或libc.so.6有什么区别?它们中的哪一个在内存映射段中链接?@assemblerMan这是一个非常不相关的问题……很抱歉,我不能帮你,因为我不知道:)