【李行之原创作品 转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 】
《Linux内核分析》 之 计算机是如何工作的
第一讲 冯 诺依曼体系结构
1.冯 诺依曼体系结构是指具有存储程序的计算机系统
- 硬件:CPU与内存通过主线连接;CPU上有一块寄存器叫做IP,该寄存器相当于指针,总是指向内存的代码段;CPU总是执行IP指向的指令然后IP自加一
- 软件(计算机如何识别指令):通过ABI(程序与计算机的接口界面)
2.大多数指令可以直接访问内存
第二讲 X86汇编基础
1. X86寄存器详解(以64位为例)
2.CPU实际取指令的时候通过cs:eip来描述
3.常见的寻址方式
- 寄存器寻址(操作的都是寄存器):将eax的值直接赋值给edx;
- 立即数寻址:将十六进制的数值123(这个立即数)直接放到edx中(和内存也没有关系);
- 直接寻址:将0x123这个地址所指向的内存数据放到寄存器edx中;
- 间接寻址:将ebx的值作为一个内存地址,这个地址所存储的数据放到edx中;
- 变址寻址:与间接寻址类似,是把ebx的值加上4作为地址
4.几条重要指令
%ebp是栈底指针;%esp是栈顶指针。函数的堆栈就由这两个指针划定。
5.练习二
【分析】
-
函数应该如下:
int g(int x)
{
return x+8;
}
int main(void)
{
return g(x)-8;
}
第三讲 汇编一个简单的C语言程序(实验)
【以自己的实验过程为例】
-
进入实验环境,编写简单的C程序
-
进行汇编
- 保存
- 根据day_01.s汇编代码分析堆栈变化
总结
【计算机是如何工作的】
- 硬件:冯诺依曼结构 (CPU+内存);
- 软件:利用堆栈为函数运行创造条件;同时使用分级存储使得数据和程序无差别的以同样规格进行存储