一条指令的执行过程 如下 主要是第五章内容
CPU中央处理器-红色是重点
分析框架
取指令:从主存中取指令(根据pc值),放到IR中;PC=PC+1(pc+"1" 的"1"是2 所以肯定是按字节编址))\
分析执行指令: 执行指令(根据类别)
---1 数据流动类指令 mov load store
---2 运算类指令 加减乘除与或非 短边长 生成CF ZF OF SF
---3 转移类指令j-- :条件转移和无条件转移-相对寻址pC+偏移量(以字节为单位还是以指令字为单位)
根据标志位判断是否转移 (指令中会给地址码
如果要转移 注意寻址方式 是相对寻址还是直接寻址(少
注意PC的值,以字节为单位还是以指令字为单位,RISC两者都可能为单位,CISC 每条指令长度不同,肯定以字节为单位编址
各阶段使用什么硬件?
常见硬件
命题
16之前唐 两层小括号(())表示寄存器间接寻址
16之后袁 用方括号R[]
取值
PC->MAR
M(MAR)->MDR->IR
PC+"1" 1--跟指令字长和编制方式有关
数据传送类
读主存关系 和 写主存关系
ALU :加法 乘法 移位运算(乘除)
题
将r0当中的数据和r1的内容所指向的主存单元的数据。进行相加,并将结果送回r1的内容所指向的主存单元中保存
15
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
如果是条件转移类指令,那么我们肯定得先去判断这个条件是否满足。
如果条件不满足,那么PC就正常的PC+1,双引号的一哦注意。
而如果条件满足的话,PC应该加上一个偏移量,而这个偏移量通常是在转移指令的内部携带的 一般用补码表示(看字节还是指令字为单位)。
无条件转移:直接pc+偏移量