您的位置:首页 > 理论基础

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的变化过程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  计算机科学 函数