4.1 指令概述
计算机的指令有微指令、机器指令和宏指令。微指令为微程序级的命令,主要面向硬件,宏指令是由若干机器指令组成的软件指令,它是面向软件的。机器指令主要处在微指令和宏指令之间。
指令系统:一台计算机中所有机器指令的集合,称为这台计算机的指令系统。
指令是设计一台计算机的硬件和底层软件的接口。
指令:引起计算机执行某种操作的最小的功能单位
一个完善的计算机系统应具有以下四方面要求RISC
- 完备性
- 有效性
- 规整性
- 兼容性
低级语言中机器语言(二进制语言)和汇编语言都是面向机器的语言。
计算机能够直接识别和执行的唯一语言是二进制语言,借助编译器或汇编器将符号语言(汇编语言)和高级语言翻译为二进制码组成的机器语言。
4.2 指令格式(重点)
机器指令是用机器字来表示的,表示一条指令的机器字,就称为指令字,通常称为指令
一条指令的结构通常为:
操作码字段OP + 地址码字段 A
地址码 何处取操作数,操作数的地址
操作码 做什么操作
n位的操作码最多能够表示2^n条指令。
# 一个指令系统只有八位,则只需要3位作为操作码 即2^3 = 8
# 一个指令系统有32位,则需要5位操作码,2^5 = 32
指令字的长度:包含的二进制代码的位数,机器字长是指计算机能直接处理的二进制数据的位数。
单字长指令:指令字长 = 机器字长
半字长指令:指令字长 = 1/2机器字长
双字长指令:指令字长 = 2机器字长
指令格式
- 定长的操作码(优点:硬件设计简单提高了指令译码和识别速度 ;缺点:指令长度较短,操作地址位数不足。用于字长较大的指令系统)
- 变长的操作码(优点:在较短的指令字表示出较多的指令条数;缺点:硬件设计复杂,指令译码和识别速度慢)
- 操作码与操作数地址有所交叉(不常用)
地址码来源:CPU内部寄存器、内存单元、外设接口寄存器
四地址指令(淘汰):寻址空间2^9 A1第一操作数 A2第二 A3结果 A4下一条指令(访问内存次数过多5次)
三地址指令:寻址空间2^12 A1 A2 A3(访问四次) (A1 OP A2 -> A3)
二地址指令:寻址空间2^18 A1放操作数也放结果 A2 PC–下一条指令地址(访问四次) (A1 OP A2 -> A1)
单地址指令:寻址空间2^36 A1 ACC(累加器)放一个操作数又放结果,PC–下一条指令地址 (A1 OP AC -> AC)
零地址指令:操作数由堆栈提供
在二地址指令中,从操作数的物理位置又可分为:存储器-存储器 SS,寄存器-寄存器 RR,寄存器-存储器 RS
SS:参与操作的数都放在内存中,需要多次访问内存
RR:不需要访问内存
RS:既要访问寄存器还要访问内存
指令助记符
由于硬件只能识别0/1,所以采用二进制操作码,将指令采用3-4个英文字母的缩写来表示指令,缩写码称为指令助记符。
#典型的指令助记符#
加法 ADD 001
减法 SUB 010
传送 MOV 011
跳转 JMP 100
转子 JSR 101
存数 STO 110
取数 LAD 111
例题
如图指令格式,其中OP为操作码,分析指令格式的特点。
- 单字长二地址指令
- 操作码地段OP可以指定128条指令 2^7
- 源寄存器和目标寄存器都是通用寄存器是RR型指令
- 这种指令结构常用于算术逻辑运算类指令。
4.3 寻址方式
通过PC寻找指令,本次寻址?寻找操作数的地址
形式地址:指令中给出的地址
有效地址:操作数的真正地址(物理地址)
取指令–>分析指令–>执行指令
寻址方式分为两类:指令寻址方式和数据寻址方式
指令寻址又分为顺序寻址方式和跳跃寻址方式
数据寻址方式
- 立即寻址:指令的地址码就是操作数;
- 直接寻址:指令中的形式地址就是操作数的有效地址;
- 间接寻址(一次间址/多次间址):形式地址是操作数有效地址的地址;
- 隐含寻址:操作数隐含在累加器中;
- 变址寻址:IR(变址)+D(形式地址) = 有效地址EA;
- 基址寻址:将变址变为基址;
- 复合寻址:变址和间址的复合(先变后间/先间后变);
- 相对寻址:主要用于转移指令
- 堆栈寻址:通过堆栈指针SP给出操作数地址
RISC精简指令系统特点:
- 选取使用频率最高的一些简单指令,条数少;
- 指令长度固定,格式种类少,寻址方式少;
- 只有取数 存数指令访问存储器,其余指令操作都在寄存器间执行,速度快。