一条指令的执行过程

151 阅读2分钟

一条指令的执行过程 如下 主要是第五章内容

CPU中央处理器-红色是重点

image.png

分析框架

取指令:从主存中取指令(根据pc值),放到IR中;PC=PC+1(pc+"1" 的"1"是2 所以肯定是按字节编址))\

分析执行指令: 执行指令(根据类别)
---1 数据流动类指令 mov load store
---2 运算类指令 加减乘除与或非 短边长 生成CF ZF OF SF
---3 转移类指令j-- :条件转移和无条件转移-相对寻址pC+偏移量(以字节为单位还是以指令字为单位)
根据标志位判断是否转移 (指令中会给地址码 如果要转移 注意寻址方式 是相对寻址还是直接寻址(少
注意PC的值,以字节为单位还是以指令字为单位,RISC两者都可能为单位,CISC 每条指令长度不同,肯定以字节为单位编址 各阶段使用什么硬件?

常见硬件

image.png

image.png

命题

16之前唐 两层小括号(())表示寄存器间接寻址
16之后袁 用方括号R[]

取值

PC->MAR
M(MAR)->MDR->IR

PC+"1" 1--跟指令字长和编制方式有关

image.png

数据传送类 image.png 读主存关系 和 写主存关系 image.png

ALU :加法 乘法 移位运算(乘除)

image.png

将r0当中的数据和r1的内容所指向的主存单元的数据。进行相加,并将结果送回r1的内容所指向的主存单元中保存

15 image.png R是社恐 在大路上不想和别的R指令撞见,所以如果sub R2 、R1, R0 =>R1,R0各自需要一个时钟周期
数据他是社恐的旅人,所以不同的数据在传送的过程当中,他们他们不能在同一条大路去碰头。是社恐我必须一个人独占一条路,不能和其他人共享同一条路 如果sub R2 、R1, (R0 )=>R0 需要先访存 在sub
sub减法有mux 做补码计算

13

16位定长指令字格式: 说明IR指令寄存器只需要16位

下一条指令是pc+2 (pc+"1" 的"1"是2 所以肯定是按字节编址)

相对偏移量OFFSET指令字长2 (PC)+2=2OFFSET (-128-127)

标志位和大小关系 CF=1 A<B ZF=1 A=B

0 & 1 =0

image.png

如果是条件转移类指令,那么我们肯定得先去判断这个条件是否满足。

如果条件不满足,那么PC就正常的PC+1,双引号的一哦注意。
而如果条件满足的话,PC应该加上一个偏移量,而这个偏移量通常是在转移指令的内部携带的 一般用补码表示(看字节还是指令字为单位)。

无条件转移:直接pc+偏移量