【0】计算机原理-CPU模型

前言

对于寄存器的学习,不要死记硬背,这些东西绝大部分情况下你是用不到的,但是这个知识关系到最底层的一些东西的实现,比如我们如何去访问内存,一定是段寄存器+通用寄存器的方式;所以我们学习寄存器一定是去理解这个机制,帮助我们在代码阶段少一些迷惑,少踩一些坑,以及去理解分页机制等机制

一.CPU

0x0 这是一张8086CPU的解剖图,比较复杂
在这里插入图片描述

0x1 这是一张嵌入式CPU的电路图
在这里插入图片描述

0x2 下面是一张CPU内部的结构图。那些是重要部分呢?
PSW:程序状态字;
PC: 程序计数器;
寄存器
在这里插入图片描述

0x3 利用抽象思维再次简化,理解了寄存器,你就理解了CPU

在这里插入图片描述

CPU和内存一起工作的时候,可以简单表示为下图
在这里插入图片描述

由于CPU硬件的这种情况,所以一般CPU的指令都是这样的格式。
这也是为什么寻址这个概念在汇编中那么重要?
因为运算所需要的数据都是从不同地址的内存或者存储单元里面来的,没有寻址,就无法找到这些数据,也就无从谈计算了

操作码 操作数(或者操作数地址)
二.寄存器发展史

0x0 这个是16位CPU的寄存器
在这里插入图片描述

0x1 这个是32位CPU的寄存器
在这里插入图片描述

0x2 这个是64位CPU的寄存器
在这里插入图片描述

0x3 这是一个arm的寄存器示例图
在这里插入图片描述

0x4 指令流水线:由于CPU的计算速度非常快,用高速内存高速缓存都无法解决计算速度存取速度差距,所以指令流水线诞生了

在这里插入图片描述

三.具体的寄存器

0x0 标志寄存器:
1.不能直接写入值,需要通过特殊的指令去写入
2.随着指令的执行,瞬间发生变化的

在这里插入图片描述

0x1 通用寄存器:可以直接写/读

32位16位8位
EAXAXAH, AL
EBXBXBH, BL
ECXCXCH, CL
EDXDXDH, DL
ESISI
EDIDI
ESPSP
EBPBP

EAX(累加器Accumulator):加减运算的结果会存储在这个寄存器里面;函数的返回值也会存储在这个寄存器

EBX(基地址寄存器Base Register):主要用于在内存寻址时存放基地址

ECX(计数寄存器Count Register):

  • 循环字符串操作时,要用它来控制循环次数;
  • 位操作 中,当移多位时,要用CL来指明移位的位数
  • 重复(REP)前缀指令LOOP指令的内定计数器

EDX(数据寄存器,Data Register)

  • 在进行乘、除运算时,它可作为默认操作数参与运算
  • 存放I/O的端口地址
  • 被用来放整数除法产生的余数

ESI/EDI(/目标索引寄存器,Source/Destination Index Register)

  • 主要用于存放存储单元在段内的偏移量
  • 作为通用寄存器可以进行任意的常规的操作,如加减移位或普通的内存间接寻址

EBP/ESP:函数调用的时候会使用到

0x2 寄存器:CS,DS,ES,SS,FS,GS
1.能够直接修改访问其值

0x3 控制寄存器:内核态才可以访问修改

0x4 调试寄存器:内核态才可以访问修改。可以用于无痕注入

在这里插入图片描述

系统地址寄存器:跟进程线程切换有关,面试加分项

总结:
通过系统地址寄存器,它会描述我们当前正在执行任务的一些状态;
通过调试寄存器,我们可以去控制它去设置一些硬件的中断,或者一些断点;
通过控制寄存器,可以知道当前这个任务它的一些模式,还可以配合其他的比如调试寄存器来打开一些新的功能或者关闭一些功能;
通过段寄存器对整个内存段的一个补充描述;有了段寄存器,就可以通过通用寄存器的一些SDI这些东西配合起来,可以访问一些大的内存地址;
通过标志寄存器可以知道CPU给的一个反馈结果计算结果是放在通用寄存器里的;
三.具体的寄存器

EIP:可以间接的手段去影响它(),函数调用机制这个寄存器就发挥了很大作用

TSC::时间戳寄存器

浮点寄存器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值