Linux内核给某个CPU设置eip,《Linux内核分析》 之 计算机是如何工作的

【李行之原创作品 转载请注明出处 《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.常见的寻址方式

68afd1c4bc9316a25d4348b702f41402.png

寄存器寻址(操作的都是寄存器):将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程序

0fe9ca11abbc0ec38633cd4f3162ae3c.png

进行汇编

cb1a5b7a881d780b1b2e74bfc522ccdd.png

保存

根据day_01.s汇编代码分析堆栈变化

de1627281f2320780795f8a52ef9c29f.png

2b7197e75400fb42a2ec8fba0c7ff970.png

72c37958979c1edbacb628dfb60fb5ad.png

b5753f2a4293d6c23e44b3f1954c99c8.png

总结

【计算机是如何工作的】

硬件:冯诺依曼结构 (CPU+内存);

软件:利用堆栈为函数运行创造条件;同时使用分级存储使得数据和程序无差别的以同样规格进行存储

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值