linux内核分析----计算机工作
2015-03-08 23:29
267 查看
作者:牛鹏飞原创作品转载请注明出处+《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000下图是一段简单的C代码,通过对它进行反汇编来分析函数调用时的堆栈工作情况;通过命令
gcc –S –o main.s main.c -m32 生成main。s汇编文件;去掉以‘.’开头的汇编代码如下图:分析代码首先代码从main标识符开始执行:从图中看出第2/3 9/10 18/19执行的指令相同,主要工作是保存当前栈基地址EBP,为被调用函数分配新的栈空间地址;总结:从分析中可以看到:函数的调用过程如下:1.保留目前的程序执行位置即EIP寄存器当前的值到栈中,对应汇编指令为call指令;2.为新的函数建立新的栈空间,即栈基地址(EBP)和栈顶地址(ESP)指向同一个地址(新的地址ESP当前的所指位置),相当于汇编里的enter指令;3.函数体执行;4.恢复EBP和ESP值到调用者的栈空间,相当于汇编里的leave指令;5.恢复EIP的值为调用处,对应汇编为ret指令
相关文章推荐
- Linux内核分析课程--通过反汇编一个简单的c程序,分析汇编代码并理解计算机如何工作的
- Linux内核分析_汇编理解计算机工作
- Linux操作系统分析之计算机是怎样工作的
- Linux内核及分析 第二周 操作系统是如何工作的?
- 【Linux操作系统分析】计算机是怎样工作的
- 《Linux 内核分析》课程作业(1)——计算机基本原理和汇编基础
- 学习Linux 0.01 内核分析和操作系统设计的准备工作
- 【Linux操作系统分析】计算机是怎样工作的
- Linux内和分析(一)计算机是如何工作的
- Linux内核分析之四——系统调用的工作机制
- 【Linux操作系统分析】实验一:计算机是怎样工作的
- Linux操作系统分析(一)计算机是怎么工作的?
- 【Linux操作系统分析】计算机是怎样工作的
- 深入分析 Linux 内核链表
- Linux内核2.6.14源码分析-双向循环链表代码分析(巨详细)
- 深入分析 Linux 内核链表
- 转载: Linux 系统内核空间与用户空间通信的实现与分析
- 嵌入式Linux内核移植相关代码分析
- linux内核中断、异常、系统调用的分析以及实践
- 学习内核---Linux网卡驱动分析