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

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

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

第一讲 冯 诺依曼体系结构

1.冯 诺依曼体系结构是指具有存储程序的计算机系统
1.硬件:CPU与内存通过主线连接;CPU上有一块寄存器叫做IP,该寄存器相当于指针,总是指向内存的代码段;CPU总是执行IP指向的指令然后IP自加一
2.软件(计算机如何识别指令):通过ABI(程序与计算机的接口界面)

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

第二讲 X86汇编基础

  1. 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语言程序(实验)
实验在自己的电脑上做的过程如下:




堆栈变化过程如下图:

posted on 2016-02-28 16:22  20135237朱国庆  阅读(206)  评论(0)    收藏  举报