您的位置:首页 > 理论基础

《Linux内核分析》 之 计算机是如何工作的

2016-02-28 16:22 295 查看
【朱国庆 原创作品 转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000】

《Linux内核分析》 之 计算机是如何工作的

第一讲 冯 诺依曼体系结构

1.冯 诺依曼体系结构是指具有存储程序的计算机系统

1.硬件:CPU与内存通过主线连接;CPU上有一块寄存器叫做IP,该寄存器相当于指针,总是指向内存的代码段;CPU总是执行IP指向的指令然后IP自加一

2.软件(计算机如何识别指令):通过ABI(程序与计算机的接口界面)

2.大多数指令可以直接访问内存

第二讲 X86汇编基础

X86寄存器详解(以64位为例)

2.CPU实际取指令的时候通过cs:eip来描述

3.常见的寻址方式

1.寄存器寻址(操作的都是寄存器):将eax的值直接赋值给edx;

2.立即数寻址:将十六进制的数值123(这个立即数)直接放到edx中(和内存也没有关系);

3.直接寻址:将0x123这个地址所指向的内存数据放到寄存器edx中;

4.间接寻址:将ebx的值作为一个内存地址,这个地址所存储的数据放到edx中;

5.变址寻址:与间接寻址类似,是把ebx的值加上4作为地址

4.几条重要指令

%ebp是栈底指针;%esp是栈顶指针。函数的堆栈就由这两个指针划定。

5.练习二

【分析】

1.函数应该如下:

int g(int x)

{

return x+8;

}

int main(void)

{

return g(x)-8;

}

第三讲 汇编一个简单的C语言程序(实验)

实验在自己的电脑上做的过程如下:









堆栈变化过程如下图:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: