【发布时间】:2015-05-06 03:25:47
【问题描述】:
我反汇编了一个小程序,询问用户姓名,然后输出“Hello + [user's_name]”
这是反汇编的输出:
主要功能:
打招呼功能:
我注意到对于main() 函数,ESP 寄存器减少了 Ox10,对于say_hello() 函数,ESP 寄存器减少了 Ox20。为什么会这样?
仅供参考:我的处理器是 1.4 GHz Intel Core i5,我运行的是 OSX
原始C代码:
void say_hello (void);
int main (){
printf("Enter your name\n");
say_hello();
return 0;
}
void say_hello (void) {
char name[5];
gets(name); //this is a unsafe function to use. Results in stack overflow
printf("Hello %s\n", name);
}
【问题讨论】: