指令系统
指令集体系结构 (ISA) 定义了{软件}和{硬件}之间的接口
指令寻址
指令寻址分为两大方法
- {顺序寻址 (PC 自动加一获取下一个地址)}
- {跳跃寻址 (转移指令转移到不同的指令地址)}
CPU 始终要根据PC中的内容, 再去主存中获取指令
数据寻址
寻址方式 | 有效地址 | 访存次数 |
---|---|---|
隐含寻址 | 程序指定 | 0 |
立即寻址 | A 即是操作数 | 0 |
直接寻址 | EA = A | 1 |
一次间接寻址 | EA = (A) | 2 |
寄存器寻址 | EA = Ri | 0 |
寄存器间接寻址 | EA = (Ri) | 1 |
寄存器间接一次寻址 | (PC) + 1 → PC | 1 |
相对寻址 | EA = (PC) + A | 1 |
基址寻址 | EA = (BR) + A | 1 |
变址寻址 | EA = (IX) + A | 1 |
Q: 隐含寻址的定义
A: 某个操作数不是显式表示, 而是隐含约定在其他位置
Q: 立即 (数) 寻址定义
A: 指令字中的地址字段指出的不是操作数的地址, 而是操作数本身, 也称立即数
Q: 立即寻址中的操作数使用哪种机器数表示?
A: 采用补码表示
Q: 直接寻址, 画图
A:
Q: 间接寻址, 画图
A:
Q: 寄存器寻址, 画图
A:
Q: 寄存器间接寻址, 画图
A:
Q: 相对寻址, 画图
A:
Q: 相对寻址的形式地址用哪种机器数表示? 可以有正负吗?
A: 用补码表示, 可正可负
Q: 基址寻址, 画图
分为专用寄存器与通用寄存器
A:
Q: 变址寻址, 画图
A:
Q: 堆栈寻址
软堆栈与硬堆栈的区别
A: 硬堆栈: 在寄存器组中划出一段区域来做堆栈
软堆栈: 在主存中划出一段区域来做堆栈
Q: 三大偏移寻址是?
A: 相对寻址, 基址寻址, 变址寻址
相对寻址与基址寻址, 变址寻址的区别
相对寻址以{PC}的值为初始地址
基址寻址, 变址寻址都以{寄存器}的值为初始地址
Q: 基址寻址与变址寻址的区别 (面向对象)
A: 基址寻址面向系统, 主要用于为多道程序或数据分配存储空间,
变址寻址面向用户, 主要用于处理数组问题,
基址寻址与变址寻址的可变性
基址寄存器值{c1: 不可变}, 而指令字中的 A 是{c1: 可变}
变址寄存器值{c2: 可变}, 而指令字中的 A 是{c2: 不可变}
CISC 和 RISC 的基本概念
CISC 与 RISC 控制器实现
CISC 控制器大多数采用{c1: 微程序}控制
RISC 控制器大多数采用{c1: 硬布线}控制
Q: CISC 与 RISC 谁的通用寄存器数量比较多?
A: RISC
Q: 为什么 RISC 的通用寄存器数量比 CISC 多?
A: 指令读取寄存器比较多, 主存比较少, 自然需要更多的寄存器
Q: RISC访存指令有哪些?
A: 只有 LOAD/STORE (取数/存数) 指令访存
Q: RISC 一定使用流水线技术吗?
A: 是的
Q: 为什么 RISC 一定使用流水线技术?
A: 精简指令集的好处是大部分指令在一个时钟周期内完成
能够在一个时钟周期内完成, 使用流水线技术, 再好不过