计组第四章:指令系统
4.1 指令系统概述
指令
- 是计算机硬件能够识别并直接执行操作的命令
- 微指令
- 是微程序级的命令,属于硬件
- 宏指令
- 是由若干条机器指令组成的软件指令, 属于软件
- 机器指令
- 也就是我们通常所说的指令,介于 微指令与宏指令之间,每条指令可完成一个独立的算术运算或逻辑运算操作
指令系统
- 一台计算机中所有指令的集合
- 发展
- 性能要求
- 完备性
- 是指用汇编语言编写各种程序时,指令系统直接提供的指令足够使用,而不必用软件来实现
- 有效性
- 是指利用指令系统提供的指令而编 写的程序能够高效率地运行
- 规范性
- 是指指令系统的对称性、匀齐性、指令格式和数据格式的一致性
- 对称性
- 是指在指令系统中所有的寄存器和存储器单元都可同等对待,所有的指令都可使用各种寻址方式
- 匀齐性
- 是指一种操作性质的指令可以支持各种数据类型
- 指令格式和数据格式的一致性
- 是指指令长度和数据长度有一定的关系,以方便处理和存取
- 对称性
- 是指指令系统的对称性、匀齐性、指令格式和数据格式的一致性
- 兼容性
- 是指计算机的体系结构设计基本相同,计算机之间具有相同的基本结构、数据表示和共同的基本指令集合
- 完备性
4.2 指令格式
指令字(简称指令)
- 表示一条指令的机器字
指令格式
- 是指令字用二进制代码表示的结构形式 ,一般由两部分组成(操作码字段+地址码字段)
操作码字段表征指令的操作特性与功能
地址码字段通常用来指定参与操作的操作数的地址
操作码
- 指明操作性质的命令码
- n位操作码的指令系统最多表示2n条指令
地址码
- 描述指令的操作对象
- 按数量分
- 零地址指令
- 无需操作数
- 操作数是默认的
- 一地址指令
- 单操作数运算
- 二元运算
- 二地址指令
- 三种类型
- 存储器-存储器型指令(SS)
- 寄存器-寄存器型指令(RR)
- 寄存器-存储器型指令(RS)
- 三种类型
- 三地址指令
- 多地址指令
- 零地址指令
指令字长度
- 一个指令字中包含二进制代码的位数
机器字长
- 计算机能直接处理的二进制数据的位数
指令字长度
- 单字长指令
- 半字长指令
- 双字长指令
- 多字长指令
- 必须两次或多次访问主存以取出一 整条指令
- 等长指令字结构
- 变长指令字结构
指令助记符
- 用一些比较容易记忆的文字符号来表示指令中的操作码和操作数
4.3 指令分类
数据传送指令
- 最基本、最常用、最重要
- 用来使数据在主存与CPU寄存器之间进行传输
算术运算指令
逻辑运算指令
程序控制指令
- 转移指令
- 条件转移
- 无条件转移
- 转子程序指令与子程序返回指令
- 转子程序指令
- 实现子程序调用的指令
- 子程序返回指令
- 从子程序中正确返回到主程序的断点并继续执行
- 转子程序指令
- 程序中断指令
输入输出指令
- 主机与外围设备进行信息交换的一类指令
- 输入
- 信息由外围设备传向主机
- 输出
- 信息由主机传向外围设备
字符串处理指令
系统控制指令
- 用于改变计算机系统的工作状态
- 条件码
- 保存当前指令执行结果的特征
- 条件码指令
- 对条件码进行置位或清除操作
- 开/关中断指令
- 可视为特殊的条件码指令
- 意味着对中断请求的允许或禁止
特权指令
- 具有特殊权限的指令
- 主要用于系统资源的分配和管理
- 一般不直接提供给用户使用
4.4 寻址方式
在程序运行过程中,形成指令或操作数地址的方式
- 指令寻址方式
- 简单
- 数据寻址方式
- 复杂
指令寻址方式
- 顺序寻址方式
- 跳跃寻址方式
- 下一条指令的地址码不 是由程序计数器给出,而是由本条指令直接给出
操作数寻址方式
操作数的寻址方式形式地址
- 指令中形成操作数或操作数地址的方式
各种不同的存储器寻址方式
- 指令中直接给出的地址
- 从形式地址生成有效地址的各种方式
- 立即寻址模式
- 指令的地址码字段指出操作数本身
- 直接寻址模式
- 在指令的地址字段中直接指出操作数在主存中的地址
- 简单、直观
- 间接寻址模式
- 指令地址码字段所指向的存储单元中存储操作数的地址
- 扩大指令的寻址能力
- 寄存器寻址模式
- 指令中的地址码是寄存器的编号
- 无需访问主存,速度快
- 直接寻址
- 寄存器内容是操作数本身
- 间接寻址
- 寄存器内容是操作数地址
- 基址寻址模式
- 将基址寄存器的内容加上指令中的形式地址而形成操作数的有效地址
- 扩大寻址能力
- 用于扩大寻址范围
- 变址寻址方式
- 将变址寄存器的内容加上指令中的形式地址而形成操作数的有效地址
- 实现程序块的规律性变化
- 用于数组的访问(与基址寻址模式不同点)
- 相对寻址方式
- 相对于当前的指令地址而言的寻址方式
- 把程序计数器PC的内容加上指令中的形式地址而形成操作数的有效地址
- 附
- 块寻址
- 在指令中指出数据块的起始地址和数据块的长度,使用一条块寻址指令完成一个数据块的传送
- 段寻址
- 将存储器空间划分为若干个单元, 在寻址一个具体单元时,由一个基地址(CPU中的段寄存器)再加上某些寄存器提供的偏移量来形成有效地址
- 块寻址
堆栈寻址方式
堆栈进栈或压栈
- 一组能存储和取出数据的暂时存储单元
栈顶
- 数据按顺序存入堆栈
出栈或弹栈
- 堆栈中的一个单元的数据
栈顶元素
- 栈项按与进栈相反的顺序从堆栈中取出
- 最后进栈的数据或最先出栈的数据
- 寄存器堆栈
- 直接设置于CPU中
- 存储器堆栈
- 在主存中
- 优点
- 任意长度
- 随意建立
- 任何对存储器寻址的指令都可寻址堆栈中的数据
堆栈硬件
- 存储区
- 堆栈执政SP
存储器堆栈
- 从高地址开始生成堆栈
- 从低地址开始生成堆栈
4.5 指令系统实例
8086/8088指令系统
- 数据传送类指令
- 算术运算类指令
- 逻辑运算与移位类指令
- 串操作类指令
- 控制转移类指令
- 处理器控制类指令
Pentium指令系统
- CPU标识指令(CPUID)
- 寄存器与CR4之间的传送指令(MOV)
- 八字节的比较并交换指令(CMPXCHG8B)
Pentium 4指令系统
- 读时间标记计数器指令(RDTSC)
- 读/写模式专用寄存器指令(RDMSR/ WRMSR)
- 恢复系统管理模式指令(RSM)
- 读性能监控计数器指令(RDPMC)
- SSE2和SSE3扩展指令集
Core 2指令系统
- 优化指令(ADDPS/HSUBPS/HADDPD/HSUBPD)
- 数据处理指令( ADDSUBPS/ADDSUBPD/MOVSHDUP/MOVSLDUP/ MOVDDUP)
- 数据传输指令(FISTTP)
- 特殊处理指令(LDDQU)