指令:计算机运行的最小的功能单位。
指令系统:一台计算机中所有的指令的集合。
计算机性能与指令系统有关,指令系统与计算机的硬件结构密切相关。
指令系统的发展
指令格式
计算机的指令格式与机器的字长、存储器的容量以及指令的功能有关
一条指令包括:
操作码
操作数的地址
操作结果的存储地址
下一条指令的地址( 由程序计数器(PC)指出,仅当改变程序的运行顺序时,下条指令的地址才由指令给出。)
指令地址的格式:
- 零地址指令
操作码格式:操作码
- 一地址指令
指令格式:操作码|A
- 二地址指令
指令格式:操作码|A1|A2
A1:第一个源操作数的存储器地址或寄存器地址。
A2:第二个源操作数和存放操作结果的存储器地址或寄存器地址。
- 三地址指令
指令格式:操作码|A1|A2|A3
A1:第一个源操作数的存储器地址或寄存器地址
A2:第二个源操作数的存储器地址或寄存器地址
A3:操作结果的存储器地址或寄存器地址
我的理解是最后一个操作码作为存储操作结果的,剩余操作码越多,源操作数数量可以越多。
- 多地址指令
此类指令功能强大,用于处理成批的数据,例如字符串处理指令、 向量指令等等,为了描述这些数据, 指令中需用多个地址来指出数据存放的首地址、长度、下标等。
- 优缺点比较
零地址、 一地址和二地址指令具有指令短,执行速度快,硬件实现简单等优点
二地址、三 地址和多地址指令具有功能强,便于编程等优点,但硬件实现比较复杂。
- 识别指令和数据
都是以二进制形式存储,指令地址由程序计数器规定,数据地址由指令规定。
指令操作码的扩展技术
指令操作码的长度决定了指令系统中完成不同操作的指令条数。
若指令的操作码长度为K位,则至多能表示2^k 条指令。
指令操作码的编码格式:固定格式 可变格式
使用原则:使用频率高的指令应分配短的操作码,使用频率低的指令分配较长的操作码。
指令长度与字长的关系
指令的长度:一条指令中所包含的二进制代码的位数,它取决于操作码字段的长度、操作数地址的个数及长度。
字长:计算机能直接处理的二进制数据的位数。
指令长度:① 尽可能短 ② 等于字节的整数倍。指令长度可以等于机器字长,也可以大于或小于机器字长。
指令长度相等:定长指令字结构;
指令长度变化:指令长度随功能而异;
数据表示
按字节编址的双字数据的两种字节次序:
低字节为低地址
高字节为低地址
寻址方式
寻址方式:确定本条指令的数据地址以及下一条要执行的指令地址的方式
- 立即数寻址
- 直接寻址
- 寄存器直接寻址
- 间接寻址
(寄存器间接寻址取得操作数速度最慢)
- 基址寻址
设置专用的基址寄存器/指令指定一个通用寄存器为基址寄存器。
基址寄存器的内容称为基址值,地址码A通常被称为位移量,位移量可正可负
基址寄存器中的值只能由系统程序设定。
变址寻址
操作数在存储器中的地址由指令地址码部分给出的地址A和指定的变址寄存器X的内容通过加法器相加得到。
需要频繁修改地址时,只要改变寄存器中的值就可以了。
相对寻址
由程序计数器PC提供基准地址,即PC中的内容加上指令的地址码部分给出的位移量的和为操作数的地址。
操作数地址-指令地址=固定数值
堆栈寻址
略……
寻址方式总结
常用寻址方式:寄存器直接、寄存器间接寻址
指令类型
指令可完成功能:
算术逻辑运算指令、移位指令、浮点运算指令、 十进制运算指令、字符串处理指令、向量运算指令、数据传送指令、转移指令、 堆栈指令、输入输出指令及特权指令等
算术逻辑运算指令
①算术运算指令
通常的标志位有进位(C)、溢出 (V)、全零(Z)、负(N)、奇偶位(P)
②逻辑运算指令
与、或、非、异 或(按位加)等逻辑运算指令
移位操作指令
- 算术移位:
操作数为带符号数
右移时填入高位的数据为操作数符号位数值
算术移位中左移一位,相当于数值乘2 (前提:无溢出),右移一位,相当于数值除2
- 逻辑移位:
操作数为无符号数
逻辑右移时高位补零
浮点数的运算指令
略
十进制运算指令
字符串处理指令
是一种非数值处理指令,一般包括字符串传送、字符串比较、字符串查询、字符串转换等指令。
数据传送指令
用于实现寄存器与寄存器、 寄存器与存储单元、存储单元与存储单元之间的数据传送。
数据传送时,数据从源地址传送到目的地址,而源地址的数据保持不变。
转移指令
用于控制程序流的转移。
多数情况下,程序是按顺序方式执行,有时候也会离开原来的顺序转移到另一段程序或循环执行某段程序。
按转移性质分类可分为:无条件转移、条件转移、过程调用与返回、陷阱等。
- 无条件转移:不受任何条件约束,直接把程序转移到指令所规定的目的地。
- 条件转移:根据计算机处理结果(条件是否满足)来决定程序如何执行。
- 调用指令:执行完被调用的程序后要回到原调用程序,继续执行call指令的下一条指令。
- 返回指令:配合使用的指令,返回指令取到返回指令后继续执行调用指令的下一条指令
- 陷阱与陷阱指令:停止当前程序的执行,转去处理相应的故障。
- 堆栈及堆栈操作指令:
堆栈指针:用于指出栈顶的地址的寄存器或存储单元
输入输出指令
用来实现主机与外部设备之间的信息交换
特权指令
定义:只能用于操作系统或者其他系统软件而不提供给用户使用
其他指令
-
向量指令
-
多处理机指令
-
控制指令
RISC和CISC
CISC:复杂指令系统
起因:计算机硬件成本的不断降低, 软件成本的不断提高。
特点:指令数量多,格式多样,寻址方式复杂。
优点:功能强大,程序设计容易。
缺点:控制器的实现困难。
RISC:精简指令系统
特点:指令数量少,使用频率高的指令; 指令长度固定,指令格式少;访问存储器的指令少等。
优点:运行速度快,控制器的实现简单。
缺点:功能简单。
(寻址方式比较少)