4.计算机指令系统.md 5.1 KB


计算机指令系统(考研复试终极整理版)

一、指令系统概述

指令系统(ISA)是计算机硬件与软件的接口,定义了CPU能执行的所有指令集合,是考研高频核心考点。
核心特性

  1. 完备性:支持所有必要操作(如算术、逻辑、控制)
  2. 有效性:常用指令执行速度快(如RISC固定长度指令)
  3. 兼容性:系列机保持指令集向下兼容(如x86系列)
  4. 规整性:指令格式对称统一(如操作数类型一致性)

二、指令格式

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位。
扩展编码解法

  1. 三地址指令:4位OP(0000-1110)→15条,剩余1111扩展
  2. 二地址指令:8位OP(1111 0000-1111 1110)→15条,剩余1111 1111扩展
  3. 一地址指令:12位OP(1111 1111 0000-1111 1111 1110)→15条
  4. 零地址指令: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条,求零地址指令最大数量。
解析

  1. 三地址指令:4位OP(0000-1110)→15条,剩余1111扩展
  2. 二地址指令:8位OP(1111 0000-1111 1011)→12条,剩余1111 1100-1111 1111
  3. 一地址指令:12位OP(剩余4位扩展,共4×16=64条,取32条)
  4. 零地址指令:剩余编码空间=64-32=32条 → 最大32条

题目2:说明基址寻址与变址寻址的区别。

  • 基址寻址:基址寄存器内容由OS设定,用于程序重定位(如进程内存空间划分)
  • 变址寻址:变址寄存器由用户设定,用于数组遍历(如循环访问A[i])

七、易错点总结

  1. 指令字长≠机器字长:指令长度可灵活设计(如x86指令1-15字节)
  2. 间接寻址访存次数:一次间接寻址需2次访存(取地址+取数据)
  3. 相对寻址偏移量计算:偏移量为补码,需符号扩展(如8位偏移扩展为32位)
  4. 操作码扩展陷阱:扩展标志位需预留(如1111作为扩展窗口)

复习建议

  1. 重点掌握操作码扩展设计与寻址方式计算题
  2. 对比CISC/RISC特性,结合ARM/x86实例理解
  3. 结合真题练习指令格式分析(如给定二进制指令解析操作码和地址码)
  4. 理解寻址方式在高级语言中的映射(如数组→变址寻址、指针→间接寻址)