读书人

函数反汇编疑惑解决方案

发布时间: 2012-03-24 14:00:46 作者: rapoo

函数反汇编疑惑
一个c函数反汇编后
前三行一般是:
push ebp
mov ebp,esp
sub esp,8

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

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


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

探讨
VC的Debug配置编译时会多分配一些额外的空间,用Release编译就不会有多余的了。

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

读书人网 >汇编语言

热点推荐