计算机指令系统(考研复试终极整理版)
一、指令系统概述
指令系统(ISA)是计算机硬件与软件的接口,定义了CPU能执行的所有指令集合,是考研高频核心考点。
核心特性:
- 完备性:支持所有必要操作(如算术、逻辑、控制)
- 有效性:常用指令执行速度快(如RISC固定长度指令)
- 兼容性:系列机保持指令集向下兼容(如x86系列)
- 规整性:指令格式对称统一(如操作数类型一致性)
二、指令格式
1. 基本结构
操作码OP + 地址码A1/A2/A3/A4
- 操作码:指令功能类型(如ADD、MOV)
- 地址码:操作数地址或下条指令地址
2. 地址码类型(按操作数数量)
| 类型 |
格式 |
访存次数 |
典型应用场景 |
| 四地址 |
OP A1 A2 A3 A4 |
4次 |
早期计算机(已淘汰) |
| 三地址 |
OP A1 A2 A3 |
4次 |
科学计算(如矩阵运算) |
| 二地址 |
OP A1 A2(A1为结果) |
4次 |
通用运算(如x86架构) |
| 一地址 |
OP A1(隐含ACC) |
2次 |
累加器架构(早期CPU) |
| 零地址 |
OP(隐含栈顶操作) |
0次 |
堆栈计算机(如JVM) |
注:现代计算机以二地址指令为主,通过寄存器减少访存次数
三、操作码设计
1. 编码方式
| 类型 |
特点 |
适用场景 |
| 定长操作码 |
所有指令操作码位数相同 |
RISC架构(如ARM) |
| 变长操作码 |
高频指令短编码,低频长编码 |
CISC架构(如x86) |
2. 操作码扩展技术(高频计算题)
例题:设计指令系统包含零地址指令16条、一地址15条、二地址15条、三地址15条,地址码4位。
扩展编码解法:
- 三地址指令:4位OP(0000-1110)→15条,剩余1111扩展
- 二地址指令:8位OP(1111 0000-1111 1110)→15条,剩余1111 1111扩展
- 一地址指令:12位OP(1111 1111 0000-1111 1111 1110)→15条
- 零地址指令:16位OP(1111 1111 1111 0000-1111 1111 1111)→16条
四、寻址方式(重点对比)
1. 操作数寻址方式
| 寻址方式 |
有效地址计算 |
特点与应用场景 |
| 立即寻址 |
操作数=指令中的立即数 |
快速赋值(如MOV AX, 5) |
| 直接寻址 |
EA=A |
寻址范围小(如静态变量访问) |
| 寄存器寻址 |
操作数在寄存器R中 |
高速访问(如ADD R1, R2) |
| 间接寻址 |
EA=(A) |
支持指针操作(如链表遍历) |
| 基址寻址 |
EA=基址寄存器 + 偏移量 |
动态重定位(如进程内存管理) |
| 变址寻址 |
EA=变址寄存器 + 偏移量 |
数组遍历(如A[i]访问) |
| 相对寻址 |
EA=PC + 偏移量 |
程序跳转(如JMP指令) |
注:
- 相对寻址与基址寻址区别:基址寄存器内容由OS设定,变址寄存器由用户设定
- 隐含寻址:操作数隐含在指令中(如PUSH/POP使用栈顶指针SP)
五、CISC与RISC对比
| 对比维度 |
CISC(x86) |
RISC(ARM/RISC-V) |
| 指令长度 |
变长(1-15字节) |
定长(4字节) |
| 寻址方式 |
复杂(10+种) |
简单(≤5种) |
| 寄存器数量 |
较少(8-16个) |
较多(32个) |
| 流水线效率 |
低(指令复杂度高) |
高(指令规整) |
| 典型应用 |
桌面/服务器(兼容性要求高) |
嵌入式/移动设备(低功耗) |
六、典型真题解析
题目1:某指令系统采用变长操作码,地址码4位,若三地址指令15条、二地址指令12条、一地址指令32条,求零地址指令最大数量。
解析:
- 三地址指令:4位OP(0000-1110)→15条,剩余1111扩展
- 二地址指令:8位OP(1111 0000-1111 1011)→12条,剩余1111 1100-1111 1111
- 一地址指令:12位OP(剩余4位扩展,共4×16=64条,取32条)
- 零地址指令:剩余编码空间=64-32=32条 → 最大32条
题目2:说明基址寻址与变址寻址的区别。
答:
- 基址寻址:基址寄存器内容由OS设定,用于程序重定位(如进程内存空间划分)
- 变址寻址:变址寄存器由用户设定,用于数组遍历(如循环访问A[i])
七、易错点总结
- 指令字长≠机器字长:指令长度可灵活设计(如x86指令1-15字节)
- 间接寻址访存次数:一次间接寻址需2次访存(取地址+取数据)
- 相对寻址偏移量计算:偏移量为补码,需符号扩展(如8位偏移扩展为32位)
- 操作码扩展陷阱:扩展标志位需预留(如1111作为扩展窗口)
复习建议:
- 重点掌握操作码扩展设计与寻址方式计算题
- 对比CISC/RISC特性,结合ARM/x86实例理解
- 结合真题练习指令格式分析(如给定二进制指令解析操作码和地址码)
- 理解寻址方式在高级语言中的映射(如数组→变址寻址、指针→间接寻址)