20161210计算机科学导论06_函数调用过程
2016-12-10 22:37
316 查看
编译:把源代码转换成机器代码(还不可以执行,只能与操作系统交流,不能与硬件交流)(生存obj文件)
链接:告诉操作系统,要用哪些,把原码打造成操作系统可用的东西,link过程会生出与平台相关的格式。(windows根据PE结构生存exe文件)
汇编代码:C/C++生成与之一一对应的汇编代码,汇编包含三种语句
1:赋值语句:eg int num = 10;(占用内存空间,占用的栈)
2:跳转语句
3:计算语句
内存中 栈、堆、代码区,常量区(保存常量),都是分开的,这样做安全性更高,对代码区和常量区进行保护(例如只读不写)
栈默认分配1024Kbyte,但是是可变的,栈用来存储临时变量,ebp寄存器记录栈的游标(一般不变),esp记录用到的最高位置的游标(会变),
栈还会存储跳转后的返回地址(调用函数的时候,用完了得回来,这时候就是用栈(这里ebp会改变到esp的位置(反汇编窗口可看到),后面回来的时候就恢复到原来的位置))
堆的使用,使用完了必须要自己来释放,否则会发生内存泄漏(指针的时候会讲)
作业:编写输出字符串的程序(Hello World),在反汇编窗口记录整个函数调用过程的ESP EBP的变化过程。
相关文章推荐
- Mootools 1.2教程 函数
- autoit InputBox 函数
- 文件遍历排序函数
- 关于C#中排序函数的总结
- Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
- ASP下经常用的字符串等函数参考资料
- PostgreSQL教程(五):函数和操作符详解(1)
- DOS批处理 函数定义与用法
- asp Chr 函数 数字转字母的方法
- Lua中的函数精讲笔记
- Lua中的闭合函数、非全局函数与函数的尾调用详解
- Lua中调用C++函数示例
- Lua实现split函数
- Lua常用时间函数使用实例
- Lua函数与字符串处理简明总结
- Lua学习笔记之表和函数
- Lua中实现sleep函数功能的4种方法
- Lua函数用法研究
- Lua基础教程之赋值语句、表达式、流程控制、函数学习笔记
- Sql Server中REPLACE函数的使用