计算机组成原理(知识点+易错点,超详细)|第四章 指令系统

目录

4.1 指令系统

4.1.1 指令集体系结构

4.1.2 指令的基本格式

4.1.3 定长操作码指令格式

4.1.4 扩展操作码指令格式

4.1.5 指令的操作类型

4.2 指令的寻址方式

4.2.1 指令寻址和数据寻址

4.2.2 常见的数据寻址方式

4.3 程序的机器级代码表示

4.3.1 常用汇编指令介绍

4.3.2 选择语句的机器级表示

4.3.3 循环语句的机器级表示

4.3.4 过程调用的机器级表示

4.4 CISC 和 RISC 的基本概念

4.4.1 复杂指令系统计算机 CISC

4.4.2 精简指令系统计算机 RISC

4.4.3 CISC 和 RISC 的比较


4.1 指令系统

4.1.1 指令集体系结构

指令集体系结构(Instruction Set Architecture,ISA)作为计算机软硬件交互的关键枢纽,详细规定了计算机处理器所能识别与执行的全部指令及其对应功能。它涵盖操作类型(诸如加法、乘法、数据传输等)、操作数来源与去向(涉及寄存器、内存地址等)、数据类型呈现形式(像整数、浮点数等)、寻址模式(用以确定操作数地址)、可访问内存空间范畴、可用寄存器的数量及特性(包含寄存器位数、用途等),甚至囊括中断机制(用于处理突发事件)、机器状态的定义与转换以及输入 / 输出架构等多方面内容。

不同类型的计算机,从日常使用的个人电脑、大型服务器到嵌入式设备,所采用的 ISA 可能大相径庭。例如,x86 架构凭借丰富指令与强大功能,在个人电脑和服务器领域广泛应用,能够满足复杂计算与多任务处理需求;而 ARM 架构则以低功耗、高性能和灵活设计,在移动设备和嵌入式系统中占据主导,适配资源受限环境。ISA 的存在,让软件开发者得以依据特定硬件平台编写高效程序,充分发挥硬件性能优势。

4.1.2 指令的基本格式

一条完整指令通常由操作码字段和地址码字段构成。操作码明确指令的操作性质与功能,不同指令系统中,其编码方式与代表操作种类各异,少则几十种,多则数百种。地址码字段负责提供操作数或其地址信息,它可以是操作数本身(立即寻址,如 “ADD R1, #5” 中的 “#5”)、内存地址(计算机借此从内存读取操作数)或寄存器编号(指示操作数所在寄存器)。地址码设计与计算机寻址方式紧密相连,合理设计可提升指令执行效率与灵活性。

4.1.3 定长操作码指令格式

定长操作码指令格式是一种常见且易理解的设计。在此格式中,指令字的最高位部分被分配固定数量位来表示操作码。例如,操作码字段固定为 n 位时,依据二进制组合原理,该指令系统最多能表示 2^n 条不同指令,如 n = 6 时,可表示 2^6 = 64 种操作。

定长操作码简化了硬件设计,因操作码长度与位置固定,指令译码器能快速准确识别指令操作类型,提升译码与执行效率。在 32 位或更长字长的计算机中更为常见,可充分利用指令字空间,保证指令功能丰富的同时维持硬件简洁高效。不过,当指令系统需扩展新指令时,固定长度操作码可能无法满足指令种类增长需求。

4.1.4 扩展操作码指令格式

为在有限指令字长下保持丰富指令种类,扩展操作码指令格式应运而生。此格式中,指令操作码字段位数并非固定,而是依指令复杂程度和地址码数量动态调整,且操作码字段分散于指令字不同位置。

通常,扩展操作码使操作码长度随地址码数量减少而增加。简单常用指令,因操作数隐含或地址信息需求少,可分配较短操作码以提高执行效率;复杂指令因需更多地址信息指定操作数,则分配较长操作码。例如,三地址指令操作码可能较短,零地址指令操作码可能较长。

设计扩展操作码指令格式需遵循两条原则:一是短码不能是长码前缀,避免指令译码歧义;二是各指令操作码必须唯一。合理运用扩展操作码,可在满足指令功能前提下缩短指令字长、提高编码效率,但也增加了指令译码与分析难度,对计算机控制器设计要求更高。

4.1.5 指令的操作类型

计算机指令系统中的指令按功能可大致分为以下几类:

  1. 数据处理指令:用于数据的算术与逻辑运算。算术运算指令包含加法(ADD)、减法(SUB)、乘法(MUL)、除法(DIV)等;逻辑运算指令有与(AND)、或(OR)、非(NOT)、异或(XOR)等,常用于数据筛选、掩码设置。此外,还包括移位指令,如左移(SHL)、右移(SHR),通过二进制位移位可实现快速乘除运算(左移一位相当于乘以 2,右移一位相当于除以 2)及位操作等功能。
  1. 数据传送指令:负责计算机不同存储单元间的数据传输。常见的有寄存器间数据传送(如 “MOV R1, R2” 将寄存器 R2 值传至 R1)、寄存器与主存储器间数据传送(如 “LOAD R1, [address]” 从内存地址 address 处加载数据到 R1;“STORE [address], R1” 将 R1 数据存储到内存地址 address 处)。数据传送指令在程序中频繁出现,确保数据在不同存储层次间高效流动,为数据处理操作提供数据支持。
  1. 程序控制指令:用于改变程序执行流程。条件转移指令(如 “BEQ R1, R2, label”,当寄存器 R1 和 R2 值相等时,程序跳转到标签 label 处执行;“BNE R1, R2, label”,当 R1 和 R2 值不等时跳转)依据条件判断结果决定是否跳转;无条件转移指令(如 “JUMP label” 直接跳转)则强制程序跳转。此外,还包括转子程序指令(如 “CALL subroutine” 调用子程序并保存返回地址,以便子程序执行完毕后返回原程序继续执行),用于实现程序模块化设计与代码复用。
  1. 输入-输出指令:负责计算机与外部设备的数据交互。通过这些指令,计算机可从输入设备(如键盘、鼠标、传感器等)读取数据,或将处理结果输出到输出设备(如显示器、打印机、磁盘等)。不同计算机系统对输入-输出指令的实现方式不同,有的将其包含在数据传送指令类中,通过特定地址空间区分内存与 I/O 设备操作;有的则设计独立的输入-输出指令集,更好地支持外部设备控制与数据传输。
  1. 状态管理指令:用于计算机系统状态控制与管理。例如,置存储保护指令可设置内存区域访问权限,防止程序非法访问内存,保障系统安全稳定;中断处理指令用于处理计算机运行中的突发事件(如外部设备请求、程序错误等),通过中断机制,计算机暂停当前程序,处理中断事件后再返回原程序继续执行。状态管理指令对维护计算机系统正常运行与资源管理至关重要。

4.2 指令的寻址方式

4.2.1 指令寻址和数据寻址

寻址方式是指令系统的重要概念,分为指令寻址和数据寻址。

指令寻址用于确定下一条待执行指令在内存中的地址,主要有顺序寻址和跳跃寻址两种方式。顺序寻址通过程序计数器(PC)自动确定下一条指令地址,每条指令执行完毕,PC 值自动增加一个指令字长,指向下一条指令内存地址。例如,在指令字长为 4 字节的系统中,当前指令地址为 0x100

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值