linux内核分析----计算机工作
来源:互联网 发布:prisma 离线 知乎 编辑:程序博客网 时间:2024/04/30 05:38
作者:牛鹏飞
原创作品转载请注明出处+《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指令
0 0
- linux内核分析----计算机工作
- [Linux内核]从一个汇编分析计算机工作原理
- 《Linux内核分析》 之 计算机是如何工作的。1
- Linux内核分析_汇编理解计算机工作
- Linux内核分析(一):计算机工作原理
- Linux内核分析 计算机是如何工作的? 学习笔记
- 《Linux内核分析》之图解汇编代码以分析计算机是如何工作的
- Linux内核分析01-分析汇编代码理解计算机是如何工作
- Linux内核分析课程1_计算机是如何工作的
- 计算机是如何工作的|Linux内核分析 第一周作业 - 网易云课堂
- 《Linux内核分析》第一周 理解计算机是如何工作的
- Linux内核分析作业1_计算机是如何工作的
- 2017年,Linux内核分析,计算机是如何工作的进行,ustc se,SA16225161,梁昱森
- LINUX内核分析第一周学习总结:计算机是如何工作的?
- Linux内核分析-计算机汇编程序分析
- Linux内核分析-计算机汇编程序分析
- Linux操作系统分析之计算机工作原理
- linux内核分析之工作队列
- 在CSDN博客的第一篇
- 代理模式与策略模式
- 自动化测试框架思路
- Infiniband驱动安装-RHEL5.8
- Linux内核驱动学习(七)----系统调用揭秘
- linux内核分析----计算机工作
- 基于HALCON的模板匹配方法总结
- 在Mac进行Java开发的环境准备
- PHP 正则(2)
- 解决 Linux 安装 Mysql 出现的 configure: error: No curses/termcap library found
- Python datetime 格式化字符串:strftime()
- Linux内核驱动学习(六)----内核链表
- 【C++学习】成员函数重载
- Linux下x86_64进程地址空间布局