7.1 机器指令
人们习惯把每一条机器语言的语句称为
机器指令
,将全部机器指令的集合称为机器的
指令系统
。指令系统反映了机器的功能,与机器的硬件有关。
1. 指令的一般格式
操作码字段 | 地址码字段 |
---|
指令由操作码和地址码两部分组成
- 操作码:反应机器做什么操作。(操作码的长度可以是固定的,也可以是变化的)
- 地址码:指出指令操作数的地址
2. 扩展操作码技术
操作码的长度随地址数的减少而增加
3. 地址码
四地址:
OP |
A 1 |
A 2 |
A 3 |
A 4 |
---|
OP为操作码; A
1
为第一操作数地址; A
2
为第二操作数地址; A
3
为结果地址; A
4
为下一条指令的地址
三地址:
用PC代替A
4
,将后续指令的地址隐含在程序计数器PC中
OP |
A 1 |
A 2 |
A 3 |
---|
OP为操作码; A
1
为第一操作数地址; A
2
为第二操作数地址; A
3
为结果地址
二地址:
用 A
1
或 A
2
代替 A
3
,即在运算结束后将运算结果放入操作数地址中
OP |
A 1 |
A 2 |
---|
OP为操作码; A
1
为源操作数地址 (和运算结果地址); A
2
为源操作数地址 (和运算结果地址)
一地址:
用 ACC 代替 A
1
或 A
2
,即ACC既存放参与运算的操作数,又存放运算的中间结果
OP |
A 1 |
---|
OP为操作码; A
1
为源操作数地址
零地址:
无地址码的指令地址,例如空操作、停机这类指令只有操作码,没有地址码
当用一些硬件资源代替指令字中的地址码字段后
- 可扩大指令操作数的寻址范围
- 可缩短指令字长
- 可减少访存次数
4. 指令字长
指令字长取决于:
- 操作码的长度
- 操作数地址的长度
- 操作数地址的个数
不同的机器指令字长不同,指令字长可以是固定的 (指令字长 = 存储字长),也可以是可变的 (按字节的倍数变化)
7.2 操作数类型和操作类型
1. 操作数类型
- 地址:无符号整数
- 数字:定点数、浮点数、十进制数
- 字符:ASCII
- 逻辑数据:逻辑运算
2. 数据在存储器中的存放方式
大端模式、小端模式:
边界对准、边界未对准:
3. 操作类型
- 数据传送
- 算术逻辑操作: 加减乘除与或非等
- 移位: 算术移位、逻辑移位、循环移位三种
- 转移: 无条件转移、条件转移、调用与返回、陷阱与陷阱指令
- 输入输出
- 其他
7.2 寻址方式
寻址方式是指确定本条指令的
数据地址
以及下一条将要执行的
指令地址
的方法,它与硬件结构有关,而且直接影响指令格式和指令功能。
寻址方式分为指令寻址和数据寻址两大类。
指令寻址
指令寻址比较简单,分为顺序寻址和跳跃寻址两种。
-
顺序寻址通过
程序计数器PC
加1自动形成下一条指令的地址
(PC) +1 --> PC
-
跳跃寻址通过
转移指令
实现
数据寻址
数据寻址的方式种类较多,因此在指令字中必须设一字段来指明属于哪种寻址方式。指令的地址码字段通常不代表操作数的真实地址,把它称为
形式地址
,记作
A
。操作数的真实地址称为
有效地址
,记作
EA
,它是由寻址方式和形式地址共同确定的。指令格式如下:
操作码 | 寻址特征 | 形式地址A |
---|
1. 立即寻址
1. 立即寻址
特点:
形式地址A不是操作数的地址,而是操作数本身,又称为立即数。
优点:
速度快
(不访存,可立即获得操作数)
缺点:
A 的位数限制了立即数的范围
2. 直接寻址
2. 直接寻址
特点:
形式地址A就是操作数的真实地址EA,即 EA = A
优点:
寻找操作数简单(执行阶段访问一次存储器)
缺点:
A 的位数决定了该指令操作数的寻址范围, 并且操作数的地址不易修改(必须修改A)
3. 隐含寻址
3. 隐含寻址
特点:
操作数的地址隐含在操作码或某个寄存器中
优点:
指令字中少了一个地址字段,可缩短指令字长
4. 间接寻址
4. 间接寻址
特点:
形式地址不直接指出操作数的地址,而是指出操作数有效地址所在的存储地址。EA = (A) 有效地址由形式地址间接提供
优点:
扩大了操作数的寻址范围, 便于编制程序
5. 寄存器寻址
(广泛应用)
5. 寄存器寻址
特点:
有效地址即为寄存器编号
优点:
1. 执行阶段不访存,只访问寄存器,执行
速度快
(
所有寻址方式中最快的一种
)
2. 因为计算机中寄存器个数有限,所以指令字较短,可缩短指令字长,节省了存储空间
6. 寄存器间接寻址
6. 寄存器间接寻址
特点:
R
i
中的内容不是操作数,而是操作数所在主存单元的地址号,即有效地址在寄存器中, 操作数在存储器中,执行阶段访存。EA = ( R
i
)
优点:
便于编制循环程序
7. 基址寻址
7. 基址寻址
特点:
1. 有效地址等于指令字中的形式地址与基址寄存器中的内容(基地址)相加。EA = ( BR ) + A。
2. 基址寄存器的内容由操作系统给定,且在程序的执行过程中不可变。
优点:
可扩大操作数的寻址范围, 有利于分段管理
8. 变址寻址
8. 变址寻址
特点:
1. 有效地址等于指令字中的形式地址与变址寄存器中的内容相加。EA = ( IX ) +A
2. 变址寄存器的内容由用户给定,且在程序的执行过程中可变。
优点:
可扩大寻址范围,便于处理数组问题
9. 相对寻址
9. 相对寻址
特点:
1. 有效地址等于指令字中的形式地址与程序计数器PC中的内容(即当前指令地址)相加。 EA = ( PC ) + A
2. 形式地址A相对于当前指令的位移量(可正可负,补码)
3. 转移地址不固定,可随PC值的变化而变,
广泛用于转移指令
。
缺点:
A 的位数决定操作数的寻址范围
10. 堆栈寻址
10. 堆栈寻址
堆栈:
用作数据暂时存储的一组寄存器或存储单元称为堆栈。
堆栈的特点:
硬堆栈
: 多个寄存器;
软堆栈
: 指定的存储空间
栈顶地址由堆栈指针SP指出
7.4 指令格式
1. 指令格式设计
为了继承已有的软件,必须考虑新机器的指令系统与同一系列机器指令系统的
兼容性
,即高档机必须能兼容低档机的程序运行,称之为“
向上兼容
”。
设计指令格式需要考虑的因素:
- 操作类型:包括指令数及操作的难易程度
- 数据类型:确定哪些数据类型可以参与操作
- 指令格式:包括指令字长、操作码位数、地址码位数、地址个数、寻址方式,以及指令字长和操作码位数是否可变等
- 寻址方式:指令寻址、操作数寻址
- 寄存器个数:寄存器的多少直接影响指令的执行时间
2. 指令格式举例
7.5 RISC 技术
RISC
即
精简指令系统计算机
,与其对应的是
CISC 复杂指令系统计算机
。
为了解决日益复杂的计算机的运算速度问题,人们研究CISC发现了
80-20 规律
,即
典型程序中 80% 的语句仅仅使用处理机中 20% 的指令
。
这就导致执行频度高的简单指令,因复杂指令的存在,执行速度无法提高。那么能否用 20% 的简单指令组合不常用的 80% 的指令功能呢?这便引发出RISC技术。
1. RISC 的主要特征
-
选用使用频度较高的一些
简单指令
以及一些很有用但不复杂的指令,让复杂指令的功能由简单指令的组合来实现 -
指令
长度固定
、
指令格式种类少
、
寻址方式少
-
只有
取数/存数 (LOAD / STORE) 指令
访存,其余指令的操作都在寄存器内完成 -
CPU 中有
多个通用寄存器
-
采用
流水线技术
,大部分指令在一个时钟周期内完成 -
控制器采用
组合逻辑
控制,不用微程序控制 -
采用
优化
的
编译
程序
2. CISC 的主要特征
- 系统指令复杂庞大,各种指令使用频度相差大
- 指令长度不固定、指令格式种类多、寻址方式多
- 访存指令不受限制
- CPU 中设有专用寄存器
- 大多数指令需要多个时钟周期执行完毕
- 采用微程序控制器
- 难以用优化编译生成高效的目的代码
3. RISC 和 CISC 的比较
- RISC更能充分利用 VLSI 芯片的面积
-
RISC更能提高计算机运算速度
(指令数、指令格式、寻址方式少, 通用寄存器多, 采用组合逻辑, 便于实现指令流水) - RISC 便于设计, 可降低成本, 提高可靠性
- RISC 有利于编译程序代码优化
- RISC 不易实现指令系统兼容
(完)