【绪:内容】
- 指令格式
指令的基本格式
定长操作码指令格式
扩展操作码指令格式 - 指令的寻址方式
有效地址的概念
数据寻址和指令寻址
常见寻址方式 - CISC和RISC的基本概念
一、指令格式
指令(机器指令):是指示计算机执行某种操作的命令。
指令系统:也称指令集,一台计算机的所有指令的集合构成该机的。
1、指令基本格式
一条指令通常包括操作码字段和地址码字段两部分:
- 操作码字段
指出该指令应该执行什么性质的操作以及具有何种功能。 - 地址码字段
给出被操作的信息(指令或数据)的地址,包括参加运算的一个或多个操作数所在的地址、运算结果的保存地址、程序的转移地址、被调用的子程序的入口地址等。
指令的长度是指一条指令中所包含的二进制代码的位数。指令字长取决于操作码的长度操作数地址码的长度和操作数地址的个数。
- 单字长指令
指令长度等于机器字长的指令 - 半字长指令
指令长度等于半个机器字长的指令
- 双字长指令
指令长度等于两个机器字长的指令
注:指令字长会影响取指令所需时间
在一个指令系统中,若所有指令的长度都是相等的,则称为定长指令字结构。若各种指令的长度随指令功能而异,则称为变长指令字结构。
① 零地址指令
只给出操作码 O P OPOP 1,没有显式地址。
- 不需要操作数的指令,如空操作指令、停机指令、关中断指令等。
- 零地址的运算类指令仅用在堆栈计算机中。通常参与运算的两个操作数隐含地从栈顶和次栈顶弹出,送到运算器进行运算,运算结果再隐含地压入堆栈。
② 一地址指令
只有目的操作数的单操作数指令,按A地址读取操作数,进行OP操作后,结果存回原地址
指令含义:
隐含约定目的地址的双操作数指令,按指令地址A可读取源操作数,指令可隐含约定另一个操作数由ACC (累加器)提供,运算结果也将存放在ACC 中。
若指令字长为32位,操作码占8位,1个地址码字段占24位,则指令操作数的直接寻址范围为
③ 二地址指令
④ 三地址指令
⑤ 四地址指令
2、定长操作码指令格式
- 定长操作码指令
- 在指令字的最高位部分分配固定的若干位(定长)表示操作码。一般 n nn 位康作码字段的指令系统最大能够表示2^n条指令。
3、扩展操作码指令格式
- 可变长度操作码
全部指令的操作码字段的位数不固定,且分散地放在指令字的不同位置上。 - 扩展操作码
使操作码的长度随地址码的减少而增加,不同地址数的指令可具有不同长度的操作码。
设地址长度为n,上一层留出m种状态,则下一层可扩展出 m × 2^n种状态
- 设计扩展操作码指令格式时,注意以下两点:
- 不允许短码是长码的前缀,即短操作码不能与长操作码的前面部分的代码相同
- 各指令的操作码一定不能重复
4、指令操作类型
- 数据传送传送指令
- 算术和逻辑运算
- 移位操作
算法移位、逻辑移位、循环移位等。
- 转移操作
二、寻址方式
寻址方式是指寻找指令或操作数有效地址的方式,即确定本条指令的数据地址及下一条待执行指令的地址的方法。寻址方式分为指令寻址和数据寻址两大类。
指令中的地址码字段并不代表操作数的真实地址,这种地址称为形式地址(A)
形式地址结合寻址方式,可以计算出操作数在存储器中的真实地址,这种地址称为有效地址(EA)
1、指令寻址
- 顺序寻址方式
- 通过程序计数器(PC) 加1(1个指令字长),自动形成下一条指令的地址。
- 跳跃寻址方式
- 指下条指令的地址码不由程序计数器给出,而由本条指令给出下条指令地址的计算方式。注意,跳跃的结果是当前指令修改PC值,所以下一条指令仍然通过程序计数器(PC)给出。
2、数据寻址
数据寻址是指如何在指令中表示一个操作数的地址。
数据寻址的方式较多,通常在指令字中设一个字段(寻址特征),用来指明属于哪种寻址方式,由此可得指令的格式如下所示:
① 隐含寻址
- 指令中不明显地给出操作数的地址,而在指令中隐含操作数的地址。
- 隐含寻址的优点是有利于缩短指令字长;缺点是需增加存储操作数或隐含地址的硬件。
② 立即(数)寻址
- 指令中的地址字段指出的不是操作数的地址,而是操作数本身,又称立即数。数据采用补码形式存放。
- 立即寻址的优点是指令在执行阶段不访问主存,指令执行时间最短;缺点是A的位数限制了立即数的范围。
③ 直接寻址
- 指令字中的形式地址A是操作数的真实地址EA,即EA=A
- 直接寻址的优点是简单,指令在执行阶段仅访问一次主存,不需要专门计算操作数的地址;缺点是A的位数决定了该指令操作数的寻址范围,操作数的地址不易修改。
④ 间接寻址
⑤ 寄存器寻址
⑥ 寄存器间接寻址
⑦ 相对寻址
⑧ 基址寻址
⑨ 变址寻址
⑩ 堆栈寻址
三、CISC和RISC
1、CISC
CISC的主要特点:
- 指令系统复杂庞大,指令数目一般为200条以上。
- 指令的长度不固定,指令格式多,寻址方式多。
- 可以访存的指令不受限制。
- 各种指令使用频度相差很大。
- 各种指令执行时间相差很大,大多数指令需多个时钟周期才能完成。
- 控制器大多数采用微程序控制。有些指令非常复杂,以至于无法采用硬连线控制。
- 难以用优化编译生成高效的目标代码程序。
1、RISC
RISC的主要特点:
- 选取使用频率最高的一些简单指令,复杂指令的功能由简单指令的组合来实现。
- 指令长度固定,指令格式种类少,寻址方式种类少。
- 只有LoadLoad /Store(取数/存数)指令访存,其余指令的操作都在寄存器之间进行。
- CPU中通用寄存器的数量相当多。
- RISC一定采用指令流水线技术,大部分指令在一个时钟周期内完成。
- 以硬布线控制为主,不用或少用微程序控制。
- 特别重视编译优化工作,以减少程序执行时间。