第四章 指令系统

机器指令
是指示计算机执行某种操作的命令,是计算机运行的最小功能单位
一台计算机的所有指令的集合构成该机的指令系统,也成为了指令集
一台计算机只能执行自己指令系统中的指令,不能执行其他系统的指令

指令的一般格式
操作码字段(OP) + 地址码字段(A)
操作码反应机器做什么操作
地址码反应对谁进行操作

地址码的数目
1、四地址指令
设指令字长32位,操作码8位,4个地址码字段各占6位
设存储字长32位,即4B
指令含义:(A1)OP(A2)-》A3,A4为下一条将要执行指令的地址

第四章 指令系统
Ai可直接表示2 ^ 6 = 64个不同的位置,共四次访存(取指令+取两个操作数+存回结果)

2、用程序计数器PC代替A4——三地址指令
3个地址码字段各占8位,指令操作数直接寻址范围为2 ^ 8 = 256,完成一条指令需要访存4次
指令含义:(A1)OP(A2)-》A3
第四章 指令系统

3、将A3存到A2或者A1当中——二地址指令
2个地址码字段各占12位,指令操作数直接寻址范围为2 ^ 12 = 4K,完成一条指令需要访存4次
若将结果暂存ACC中,则需访存3次
指令含义:(A1)OP(A2)-》A1
第四章 指令系统
4、一地址指令
1个地址码字段占24位,指令操作数直接寻址范围为2 ^ 24 = 16M
指令含义:
①、OP(A1)-》A1,如加1、减1、取反、求补等,需访存3次
②、(ACC)OP(A1)-》ACC,隐含约定目的地址为ACC,需访存2次
第四章 指令系统
5、零地址指令
指令含义:
①、不需要操作数,如空操作、停机、关中断等指令
②、堆栈计算机,两个操作数隐含存放在栈顶和次栈顶,并将结果压到栈顶
第四章 指令系统
定长操作码
指令字的最高位部分分配固定的若干位表示操作码 n位 -》2 ^ n条指令
简化了计算机硬件设计,提高指令译码和识别速度

扩展操作码
短操作码不能与长操作码的前面部分的代码相同
各指令的操作码一定不能重复
第四章 指令系统
操作数类型
1、地址:无符号整数
2、数字:定点数、浮点数、十进制数
3、字符:ASCii
4、逻辑数:逻辑运算

数据的存放方式:
第四章 指令系统
寻址方式
寻找指令或者操作数的有效地址的方式
即确定本条指令的操作数地址或者下一跳欲执行指令的指令地址

1、指令寻址:
指令的地址始终由程序计数器PC给出
①、顺序寻址 (PC) + 1 -》 PC
②、跳跃寻址 由转移指令指出

2、数据寻址
第四章 指令系统
形式地址:指令字中的地址
有效地址:操作数的真实地址
寻址特征:寻址方式字段
以下约定指令字长 = 机器字长 = 存储字长

①、隐含寻址:不是明显地给出操作数的地址,而是在指令当中隐含着操作数的地址
优点:缩短指令字长
缺点:需增加存储操作数或隐含地址的硬件
第四章 指令系统
②、立即寻址:形式地址A即为操作数,又称为立即数,一般采用补码形式
取指令访存1次,执行指令访存0次,暂不考虑存结果——共访存1次
优点:指令执行阶段不访问主存,指令执行时间最短
缺点:A的位数限制了立即数的范围
第四章 指令系统
③、直接寻址:指令字中的形式地址A就是操作数的真实地址,即EA = A
取指令访存1次,执行指令访存1次,暂不考虑存结果——共访存2次
优点:简单,指令执行阶段仅访问一次主存
缺点:A的位数决定了该操作数的寻址范围,操作数的地址不易修改
第四章 指令系统
④、间接寻址:指令的地址字段给出的形式地址不是操作数真正地址,而是操作数有效地址所在的存储单元的地址,也就是操作数地址的地址,即EA = (A)
取指令访存1次,执行指令访存2次,暂不考虑存结果——共访存3次
优点:扩大寻址范围,便于编制程序
缺点:指令在执行阶段要多次访存
第四章 指令系统
⑤、寄存器寻址:在指令字中直接给出操作数所在的寄存器编号,即EA = Ri,操作数在Ri所指的寄存器中
取指令访存1次,执行指令访存0次,暂不考虑存结果——共访存1次
优点:指令在执行阶段不访问主存,只访问寄存器,指令字短且执行速度快
缺点:寄存器价格昂贵,计算机中寄存器个数有限
第四章 指令系统
⑥、寄存器间接寻址:寄存器Ri中给出的不是一个操作数,而是操作数所在主存单元的地址,即EA = (Ri)
取指令访存1次,执行指令访存1次,暂不考虑存结果——共访存2次
特点:比一般间接寻址相比速度更快,但执行阶段需要访问主存
第四章 指令系统
⑦、基址寻址:将CPU中基址寄存器(BR)的内容加上指令格式中的形式地址A,形成操作数的有效地址,即EA = (BR)+ A
基址寄存器面向操作系统,其内容由操作系统或管理程序确定。在程序执行过程中,基址寄存器中的内容不变(作为基地址),形式地址可变(作为偏移量)
优点:可扩大寻址范围;用户不必考虑自己的程序存于主存哪一空间区域,故有利于多道程序设计,以及可用于编制浮动程序
第四章 指令系统
第四章 指令系统
⑧、变址寻址:有效地址EA等于指令字中形式地址A与变址寄存器IX的内容相加之和,即EA = (IX)+ A,其中IX为变址寄存器(专用),也可用通用寄存器作为变址寄存器
变址寄存器是面向用户的,在程序执行过程中,变址寄存器的内容可由用户改变(作为偏移量),形式地址A不变(作为基地址)
优点:可扩大寻址范围,在数组处理过程中,可设定A为数组的首地址,不断改变变址寄存器IX的内容,便可很容易形成数组中任一数据的地址,特别适合编制循环程序
第四章 指令系统
变址寻址与基址寻址配合使用:EA = A +(BR)+(IX)
先变址后间址:EA = (A +(IX))
先间址后变址:EA = (A)+(IX)

⑨、把程序计数器PC的内容加上指令格式中的形式地址A而形成操作数的有效地址,即EA = (PC)+A,其中A是相对于当前指令地址的位移量,可正可负,补码表示
优点:操作数的地址不是固定的,它随着PC值的变化而变化,并且与指令地址之间总是相差一个固定值,因此便于程序浮动
相对寻址广泛应用于转移指令
第四章 指令系统
⑩、堆栈寻址:操作数存放在堆栈中,隐含使用堆栈指针(SP)作为操作数地址
第四章 指令系统
CISC:复杂指令集计算机
设计思路:一条指令完成一个复杂的基本功能
80-20规律:典型程序中80%的语句仅仅使用处理机中20%的指令

RISC:精简指令集计算机
设计思路:一条指令完成一个基本“动作”,多条指令组合完成一个复杂的基本功能

CISC:指令集复杂,数目多,指令长度不固定,寻址方式多,采用微程序控制,可使用的通用寄存器数量很少,代码很难优化
RISC:指令集简单,数目少,定长指令,采用组合逻辑控制,寻址方式少,采用组合逻辑控制,可使用通用寄存器数量多,可以采用优化手段生成高效代码