当前位置: 代码迷 >> 汇编语言 >> 函数反汇编疑惑解决方案
  详细解决方案

函数反汇编疑惑解决方案

热度:5088   发布时间:2013-02-26 00:00:00.0
函数反汇编疑惑
一个c函数反汇编后
前三行一般是:
push ebp  
mov ebp,esp
sub esp,8

第三行我没法理解
主要是那个“8”
我试了下
这个数不是固定的
有时候是48
有时候是14
等等

请问
这个数是干嘛的
怎么确定这个数的?
要不要理会?


------解决方案--------------------------------------------------------
这个数是干嘛的 -〉在栈中分配8字节的局部变量空间
怎么确定这个数的?-〉按局部变量所需空间大小确定 
要不要理会?-〉一般不用
------解决方案--------------------------------------------------------
有些是编译器特有的行为,一般是分配局部val。
------解决方案--------------------------------------------------------
VC的Debug配置编译时会多分配一些额外的空间,用Release编译就不会有多余的了。
------解决方案--------------------------------------------------------
探讨
VC的Debug配置编译时会多分配一些额外的空间,用Release编译就不会有多余的了。

------解决方案--------------------------------------------------------
用汇编更少,不会浪费空间。如果你在你的函数里多加一句
如:a++,你可以看到这个局部变量是怎么调用的了
------解决方案--------------------------------------------------------
为防止缓冲区溢出的编译设置,-Gz
  相关解决方案