2 g989 1314125 g989_1314125 于 2012.11.13 14:17 提问

mov 0x40(%eax),%eax是什么意思?

有一行奇怪的提示:

0x01b55ee2  <+0014>  mov    0x40(%eax),%eax

这行是什么意思?0x40()代表什么?我的代码在那行崩溃了。 %eax内容的寄存器是0。

1个回答

Chengzi_963
Chengzi_963   2012.11.13 15:18
已采纳

代码将%eax + 0x40看做地址了,并且从那个地址移动了32bit到%eax,要是%eax值是0,那你基本上在处理废指针了。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
内联汇编中慎用eax,ecx,edx
#include "stdafx.h" #include #include #include // 测试vc6默认对寄存器保存情况: // ebp总是在函数开始push, ebx、esi、edi如果用到也会push, eax、ecx、edx则永远不push int asm_add(int a, int b) { __asm { mov eax, a add
mov eax, dword ptr [esi]指令区别
mov eax,esi  将esi中的数据传送到eax中 mov eax,[esi]  esi中是地址,将内存中该地址的数据传送到eax中,也就是间接寻址 mov eax, dword ptr [esi]  dword表示的是双字,四字节。esi中保存的是为内存中的地址。将该地址处的4字节数据传送到eax中。
CSAPP之栈帧结构理解
C语言需要经过编译成为机器代码(即二进制代码)才能在机器上执行,而这个过程实际上是这样子的,C语言源程序(.c)首先通过预处理器拓展得到(.i),编译器处理得到汇编(.s),汇编器处理得到目标文件(.o),此时.o文件中已经是二进制代码了,但还要最终经过链接器处理才能得到最终的可执行机器代码(.exe)。假设我们有一个swap.c文件,那么在编译时将程序的后缀名依次转换为:Created with
32位汇编语言学习笔记(20)--栈破坏检测
还是使用前面缓冲区溢出的那个程序,使用-fstack-protector编译选项。 gcc -O1 -m32 -fstack-protector-o bufovf bufovf.c 对映像文件进行反汇编: objdump -d bufovf 得到如下结果: bufovf:    file format elf32-i386 …… 08048524 :  8048524:
How does “mov (%ebx,%eax,4),%eax” work?
转自:  http://stackoverflow.com/questions/14900343/how-does-mov-ebx-eax-4-eax-work The complete memory addressing mode format in AT&T assembly is: offset(base, index, width) So for your
二进制bomb实验第三弹
卡耐基梅隆大学二进制bomb实验第三弹
汇编语法与实例 解释: mov eax, dword ptr [728C6C]
mov eax, dword ptr [728C6C]是把内存地址728C6C中的DWORD(32位)数据赋给eax。 eax 00424750 ASCII "218"是提示你如果把eax的值作为内存地址来看,该内存中储存着“218”这个字符串
mov 0x804a460(, %eax, 4), %eax
mov 0x804a460(, %eax, 4), %eax在看汇编代码的时候看到这条指令,不是很确定,就查了一下,在这记录一下offset(base, index, width) ;其值为 base+index*width+offset ;所以对于 mov 0x804a460(, %eax, 4), %eax ;可翻译为 eax = eax*4+0x804a460
【整理】几个汇编语句代码的解析
mov eax,0a text eax,eax je  xxxx,这个跳会跳吗?能详细解释下test eax,eax这是什么意思嘛?这样检测下来的结果不是永远相等的嘛! =================
汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp这些都是什么意思啊?
汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp这些都是什么意思啊? eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。 比方说:add eax,-2 ; //可以认为是给变量eax加上-2这样