科大Linux内核分析之实验一
2016-02-22 14:59
615 查看
通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的,作者徐冰,原创作品,来自云课堂《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
1.C语言代码#include<stdio.h> int g(int x) { return x+3; } int f(int x) { return g(x); } int main(void) { return f(8)+1; }
2.在Linux64位上面生成汇编语言为:
需要声明:其中带.的为注释内容(已经删掉),寄存器ebp为堆栈底,esp为堆栈的顶部,
ret指令: pop eip
leave指令: movl %ebp,%esp popl %ebp
call指令:pushl %eip
g: pushl %ebp movl %esp, %ebp movl 8(%ebp), %eax addl $3, %eax popl %ebp ret f: pushl %ebp movl %esp, %ebp subl $4, %esp movl 8(%ebp), %eax movl %eax, (%esp) call g leave ret main: pushl %ebp movl %esp, %ebp subl $4, %esp movl $8, (%esp) call f addl $1, %eax leave ret
3.分析堆栈的变化
程序从main函数开始:
相关文章推荐
- linux java环境变量配置
- Linux计划书
- linux解压
- linux基础知识及相关命令
- 安装用于学习C语言的linux系统基本步骤
- linux wc 命令
- centos 安装jdk/resin/mysql
- linux 操作数据库
- Linux 无线驱动接口 wext 和 nl80211
- linux操作系统位数
- ls的常用命令
- Linux 开启IP转发功能
- windows和linux下等待线程的退出
- linux发行版的分析比较
- linux下载文件命令wget
- Linux 时间相关
- Linux目录权限
- 2016:如何选择 Linux 发行版
- Linux下统计出现次数最多的指定字段值
- Linux DHCP服务器基本设定