mirror of
https://github.com/OmegaZhou/408-notes.git
synced 2026-02-02 18:28:58 +08:00
5.0 KiB
5.0 KiB
指令系统
指令格式
一般形式
- 操作码字段+地址码字段
零地址指令
格式
- 操作码字段
含义
- 不需要操作数,如空指令、停机指令、关中断指令
- 在堆栈计算机中,参与运算的若干个操作数直接从栈顶弹出,结果也存放在堆栈中
一地址指令
格式
- 操作码字段+地址码1
含义
- 只有目的操作数的单操作数指令,从地址中取数据计算后存回该地址,如递增指令、取反指令等
- OP(A
1)->A1
- OP(A
- 隐含操作数的双操作指令,指令可约定另一个操作数由ACC给出,并将结果存入ACC
- (ACC)OP(A
1)->(ACC)
- (ACC)OP(A
二地址指令
格式
- 操作码字段+地址码1+地址码2
含义
- 给出两个操作数进行计算,称为源操作数和目的操作数,其中目的操作数还存放本次运算结果
- (A
1)OP(A2)->(A2)
- (A
三地址指令
格式
- 操作码字段+地址码1+地址码2+地址码3
含义
- 给出两个操作数进行计算,结果存放在第三个操作数上
- (A
1)OP(A2)->(A3)
- (A
四地址指令
格式
- 操作码字段+地址码1+地址码2+地址码3+地址码4
含义
- 给出两个操作数进行计算,结果存放在第三个操作数上,下一条指令的地址为地址码4
- (A
1)OP(A2)->(A3)
- (A
分类
- 定长操作码指令
- 不定长操作码指令
寻址方式
指令寻址
- 顺序寻址
- 程序计数器PC+1,得到下一条指令地址
- 跳跃寻址
- 转移指令修改PC的值,从而修改下一条指令地址
数据寻址
格式
- 操作码+寻址特征+地址
隐含寻址
- 不显式给出操作数地址,如规定累加器作为第二操作数地址
立即数寻址
- 直接给定操作数
直接寻址
- 直接给出操作数在主存的地址
- EA=A
间接寻址
- 给出的地址为操作数地址的地址
- EA=(A)
寄存器寻址
- 给出操作数所在的寄存器编号
- EA=R
寄存器间接寻址
- 操作数地址在给定的寄存器中
- EA=(R)
相对寻址
- 操作数地址EA=(PC)+A
基址寻址
- 设置基址寄存器BR
- 由操作系统维护,程序运行时不可改变
- 使用通用寄存器作为BR,用户有权知道作为基址寄存器的寄存器是哪一个
- EA=(BR)+A
- 优点
- 扩大寻址范围
- 便于解决多道程序问题
变址寻址
-
设置变址寄存器IX
-
由用户维护
-
在程序运行时可修改
-
EA=(IX)+A
-
优点
- 扩大寻址范围
- 适合处理数组问题和循环程序
堆栈寻址
- 使用栈顶作为隐含操作数地址
结合寻址方式
- 先间址再变址:EA=(A)+(IX)
- 先变址再间址:EA=(A+(IX))
- etc
运算标记位
- ZF:零标志,运算结果为0时置1
- OF:溢出标志,运算结果溢出时置1
- CF:进位/借位标志,把操作数都看作无符号数
- 相减运算A-B时,若A<B时,则发生借位,CF置1
- 相加运算时,若进位,CF置1
- SF:符号标志,把操作数看作有符号数
- 结果为正时置1
- 结果为负时置0
指令系统发展方向
CISC(复杂指令系统计算机)
- 指令数目多
- 指令长度不固定
- 指令格式多
- 寻址方式多
- 可以访存的指令不受限制
- 各指令使用频率相差大
- 各指令执行时间相差大,大部分要多个时钟周期
- 大多数采用微程序控制,部分指令复杂,难以适应硬连线控制
- 难以优化
RISC(精简指令系统计算机)
- 选取使用频率最高的指令,复杂指令功能由简单指令实现
- 指令长度固定
- 指令格式少
- 寻址方式少
- 只有Load和Store指令可以访存,其他指令操作都在寄存器间完成
- 通用寄存器数目多
- 采用指令流水线技术,多数指令在一个时钟周期内完成
- 以硬布线为主,不用或少用微程序控制
- 注重编译优化
对比
RISC优点
- 更能利用VLSI芯片面积
- 运算速度块
- 便于设计,成本低,可靠性高
- 便于优化
| CISC | RISC | |
|---|---|---|
| 指令系统 | 庞大,复杂 | 简单,精简 |
| 指令数目 | 一般大于200 | 一般少于100 |
| 指令字长 | 不固定 | 固定 |
| 可访存指令 | 不加限制 | 只有Load/Store指令 |
| 指令执行时间 | 差别大 | 绝大部分在一周期内完成 |
| 指令使用频率 | 差别大 | 都比较常用 |
| 通用寄存器数 | 较少 | 多 |
| 目标代码 | 难以优化 | 容易优化 |
| 控制方式 | 绝大多数使用微程序控制 | 绝大多数为组合逻辑控制 |
| 指令流水线 | 可以通过一定方式实现 | 必须实现 |