linux内核分析 第一周 计算机是如何工作的 20125221银雪纯
2016-02-28 20:30
323 查看
我使用的c语言代码是:
int g(int x)
{
return x + 1;
}
int f(int x)
{
return g(x);
}
int main(void)
{
return f(6) + 3;
}
使用实验楼的linux环境得到的汇编代码如下:
1 g:
2 pushl %ebp
3 movl %esp, %ebp
4 movl 8(%ebp), %eax
5 addl $1, %eax
6 popl %ebp
7 ret
8 f:
9 pushl %ebp
10 movl %esp, %ebp
11 subl $4, %esp
12 movl 8(%ebp), %eax
13 movl %eax, (%esp)
14 call g
15 Leave
16 ret
17 main:
18 pushl %ebp
19 movl %esp, %ebp
20 subl $4, %esp
21 movl $6, (%esp)
22 call f
23 addl $3, %eax
24 leave
25 ret
汇编代码的工作过程中堆栈的变化如下:
总结:
计算机是如何工作的。
冯·诺依曼结构:从硬件的角度:CPU通过总线和内存连接,CPU从IP所指的代码段取指令执行。
从程序员的角度:内存负责保存指令,CPU负责执行指令。
CPU怎么识别,识别什么样的指令:
API 程序员与计算机的接口
ABI 程序与CPU的接口
约定指令是用什么寄存器
x86计算机中,eip是自加一的指向一个指令,自加一是加一条指令,而非字节等,eip还可以被其他指令修改,如跳转调用指令。
CPU在实际取指令时根据CS:eip来准确定位一个指令。
linux内核使用的是AT&T汇编格式。
int g(int x)
{
return x + 1;
}
int f(int x)
{
return g(x);
}
int main(void)
{
return f(6) + 3;
}
使用实验楼的linux环境得到的汇编代码如下:
1 g:
2 pushl %ebp
3 movl %esp, %ebp
4 movl 8(%ebp), %eax
5 addl $1, %eax
6 popl %ebp
7 ret
8 f:
9 pushl %ebp
10 movl %esp, %ebp
11 subl $4, %esp
12 movl 8(%ebp), %eax
13 movl %eax, (%esp)
14 call g
15 Leave
16 ret
17 main:
18 pushl %ebp
19 movl %esp, %ebp
20 subl $4, %esp
21 movl $6, (%esp)
22 call f
23 addl $3, %eax
24 leave
25 ret
汇编代码的工作过程中堆栈的变化如下:
总结:
计算机是如何工作的。
冯·诺依曼结构:从硬件的角度:CPU通过总线和内存连接,CPU从IP所指的代码段取指令执行。
从程序员的角度:内存负责保存指令,CPU负责执行指令。
CPU怎么识别,识别什么样的指令:
API 程序员与计算机的接口
ABI 程序与CPU的接口
约定指令是用什么寄存器
x86计算机中,eip是自加一的指向一个指令,自加一是加一条指令,而非字节等,eip还可以被其他指令修改,如跳转调用指令。
CPU在实际取指令时根据CS:eip来准确定位一个指令。
linux内核使用的是AT&T汇编格式。
相关文章推荐
- android学习笔记 之 HttpUrlconnection的使用
- 数据结构9-队列复习大纲
- 数据结构8-栈复习大纲
- 数据结构-7
- 【bzoj3698】XWW的难题 有上下界的网络流
- 【C/C++学院】0905-boostSocketTCPUDP/虚函数表的调用/复杂表达式
- Tcpdump 的简单用法
- Linux网络编程:原始套接字的魔力【续】
- Linux网络编程:原始套接字的魔力【下】
- Linux网络编程:原始套接字的魔力【上】
- 计算机网络20--Socket编程
- 传输层中的协议 TCP & UDP
- 八皇后问题的回朔法求解
- 计算机专业英语 学习笔记 7
- 网络流(最大费用最大流) :POJ 3680 Intervals
- TCP/IP协议详解:卷一----笔记(3)IP:网际协议
- 图像处理与计算机视觉基础,经典以及最近发展
- 虚拟机网络设置(四种方式)
- Linux centos PXE无人值守安装 DHCP+TFTP+HTTPD+Kickstart
- TCP/IP协议三次握手与四次握手流程解析