指令系统¶
概述¶
指令系统是计算机所能执行的全部指令的集合,它表征了计算机的基本功能,是计算机硬件和软件的主要界面。指令系统的设计直接影响计算机的性能和效率。
指令的基本格式¶
指令的组成¶
一条指令通常由两部分组成:
指令格式
| 操作码(OP) | 地址码(Ad) |
| 指明操作类型 | 指明操作数地址 |
操作码的设计¶
1. 定长操作码¶
定长操作码
操作码长度固定,便于译码,但浪费编码空间。
特点:
- 操作码长度固定
- 译码简单,速度快
- 编码空间利用率低
- 适用于指令数量较少的情况
示例:
2. 变长操作码¶
变长操作码
操作码长度可变,节省编码空间,但译码复杂。
特点:
- 操作码长度可变
- 编码空间利用率高
- 译码复杂,速度较慢
- 适用于指令数量较多的情况
扩展技术:
- 操作码扩展技术
- 频率优先的编码方法
地址码的设计¶
根据地址码的数量,指令可以分为以下几种格式:
1. 四地址指令¶
格式: OP A1 A2 A3 A4
功能: (A1) OP (A2) → A3, 下条指令地址为A4
特点:
- 直观,易于理解
- 指令长度长
- 程序无法自动顺序执行
2. 三地址指令¶
格式: OP A1 A2 A3
功能: (A1) OP (A2) → A3
特点:
- 常见的指令格式
- 指令长度适中
- PC自动提供下条指令地址
示例:
3. 二地址指令¶
格式: OP A1 A2
功能: (A1) OP (A2) → A1
特点:
- 指令长度较短
- 一个操作数被覆盖
- 广泛应用
示例:
4. 一地址指令¶
格式: OP A1
功能: (ACC) OP (A1) → ACC
特点:
- 指令长度短
- 需要累加器(ACC)
- 适用于累加器型机器
示例:
5. 零地址指令¶
格式: OP
功能: 用于堆栈操作
特点:
- 指令长度最短
- 操作数隐含在堆栈中
- 适用于堆栈型机器
示例:
寻址方式¶
寻址方式
寻址方式是指确定操作数有效地址的方法。
1. 立即寻址¶
操作数在指令中
格式: OP #data
特点:
- 操作数直接在指令中
- 执行速度快
- 操作数固定,灵活性差
示例:
2. 直接寻址¶
指令给出操作数的直接地址
EA = Ad
特点:
- 有效地址在指令中
- 寻址简单
- 地址空间受限
示例:
3. 间接寻址¶
指令给出操作数地址的地址
EA = M[Ad]
特点:
- 有效地址在存储器中
- 寻址灵活
- 需要多次访存
示例:
| Text Only | |
|---|---|
4. 寄存器寻址¶
操作数在寄存器中
EA = Ri
特点:
- 操作数在寄存器中
- 执行速度快
- 无需访存
示例:
5. 寄存器间接寻址¶
寄存器给出操作数地址
EA = M[Ri]
特点:
- 有效地址在寄存器中
- 比间接寻址快
- 适合指针操作
示例:
| Text Only | |
|---|---|
6. 相对寻址¶
相对于PC的寻址
EA = (PC) + Ad
特点:
- 有效地址 = PC + 位移量
- 适合转移指令
- 程序浮动方便
示例:
| Text Only | |
|---|---|
7. 基址寻址¶
相对于基址寄存器的寻址
EA = (BR) + Ad
特点:
- 有效地址 = 基址 + 位移量
- 适合多道程序设计
- 实现程序重定位
示例:
| Text Only | |
|---|---|
8. 变址寻址¶
相对于变址寄存器的寻址
EA = (IX) + Ad
特点:
- 有效地址 = 变址 + 形式地址
- 适合数组操作
- 便于循环处理
示例:
| Text Only | |
|---|---|
指令系统的设计原则¶
CISC与RISC
指令系统设计有两种主要流派:
CISC (Complex Instruction Set Computer)¶
特点:
- 指令系统复杂
- 指令功能强大
- 指令长度可变
- 寻址方式多样
- 微程序控制
代表: x86系列
优点:
- 指令功能强
- 目标代码短
- 兼容性好
缺点:
- 指令系统复杂
- 执行效率低
- 难以优化
RISC (Reduced Instruction Set Computer)¶
特点:
- 指令系统简单
- 指令功能单一
- 指令长度固定
- 寻址方式简单
- 硬布线控制
代表: ARM, MIPS, RISC-V
优点:
- 指令系统简单
- 执行效率高
- 易于优化
- 适合流水线
缺点:
- 指令功能弱
- 目标代码长
- 编译器要求高