关于计算机将c代码转换成汇编代码的过程描述
来源:互联网 发布:本.西蒙斯体测数据 编辑:程序博客网 时间:2024/04/30 07:28
一、实验截图:
验楼中的linux操作平台上的指令代码:
最终转换成的汇编代码:
二、汇编代码的分析
%ebp,%esp都指向栈顶
main函数开始:pushl %ebp——实际上就是把ebp的值放入,即ebp的值0放入第一个栈;
movl %esp,%ebp——%esp指向1的位置(移动4个字节),%ebp也指向1的标号位置;
subl $4,%esp——%esp指向的位置向下移动一个位置,即为2的位置;
movl $9,(%esp)——就是将9指向%esp的位置;
call f ——就是在2的位置加上eip,eip指向f,ebp指向下一个位置;
此时跳转到f的位置,则从f的位置开始执行:
pushl %ebp——把ebp指向4的位置,esp也指向4的位置;
movl %esp,%ebp——即%esp也指向4的位置;
movl 8(%ebp),%esp——也即此时esp的值就是8;
call g——跳转到g的位置,即eip指向g的位置;
跳转到g的位置,类似于f。
leave相当于这两条指令:movl %ebp,%esp
pop%ebp
他是:因为esp指向esp的位置,此时为4.
popl %ebp——相当于指向最初始的位置。
整函数的堆栈就是先向下增长,然后再向上还原。将程序变成了指令流。
三、总结:
将c代码转换成汇编代码的过程,就是整函数的堆栈的向下增长和向上还原的过程。
庄华健
Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
- 关于计算机将c代码转换成汇编代码的过程描述
- 如何将C语言代码转换为对应的汇编代码?
- Linux汇编代码学习,反汇编简单的c及分析汇编代码工作过程
- stm32启动过程(汇编代码)及汇编到main函数的转换过程的实现
- 将C/C++写的代码转换成Pas
- 如何快速查看将C反汇编的代码
- 如何快速查看将C反汇编的代码
- 如何快速查看将C反汇编的代码
- 反编译C程序为汇编代码,汇编代码执行过程的分析与思考
- 反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- 通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- 通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- 通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- 通过汇编一个简单的C程序,分析汇编代码理解计算机工作原理
- 通过汇编一个简单的C程序,分析汇编代码,理解计算机如何工作
- shellcode转换成汇编代码
- 基于MATLAB Coder将matlab代码转换成C代码
- 通过反汇编代码探究计算机运行过程
- IOS 图片点击放大不失真
- 2015年终总结
- 九度OJ 1396(DP) 1397(尺取法) 1398(最值) 1399(背包,DP) 1401(未完成)
- Android Studio下ActionBar示例
- [BZOJ3437] 小P的牧场
- 关于计算机将c代码转换成汇编代码的过程描述
- const char类型的实参与“LPCTSTR”类型的形参不兼容
- 在线购物系统权限模块
- jrebel实现Java热更不用真是暴殄天物
- Elasticsearch基础知识整理
- SpringMVC静态资源无法访问的一个奇怪的问题
- 每次读取一行字符串输入
- Android BLE编程
- Test F