机器指令系统的分类、常见的寻址方式、指令格式、设计指令系统时应考虑的各种因素。
人们习惯把每一条机器语言的语句称为机器指令,将全部机器指令的集合称为机器的指令系统。
机器的指令系统集中反应了机器的功能。
指令的一般格式
指令由操作码和地址码组成
操作码
其位数反应了机器的操作种类,机器允许的指令条数
通常采用扩展操作码技术,使操作码的长度随地址数的减少而增加,不同的地址数指令可以具有不同长度的操作码,从而满足需要的前提下,有效缩短指令字长。
地址码
这里的“地址”可以是主存的地址,也可以是寄存器的地址,甚至可以使I/O设备的地址。
四地址指令
OP为操作码;A1为第一操作数地址;A2为第二操作数地址;A3为结果地址;A4为下一条指令的地址。
三地址指令
可以完成(A1)OP(A2)->A3的操作,后续指令的地址隐含在程序计数器PC之中。
二地址指令
可以完成(A1)OP(A2)->A1的操作,即A1字段既代表源操作数的地址,又代表了本次运算结果的地址。直接寻址范围为2的12次方=4K。
一地址指令
可以完成(ACC)OP(A1)->ACC的操作,ACC既存放参与运算的操作数,又存放运算的中间结果。指令字长为32位,操作码位数为8位,直接寻址范围为2的24次方=16M。
零地址指令
零地址指令在指令字中无地址码,例如空操作(NOP),停机(HLT)这类指令没有地址码。
而子程序返回(RET)、中断返回(IRET)这类指令没有地址码,其操作数的地址隐含在堆栈指针SP中。
地址字段表示寄存器时,也有三地址、二地址、一地址之分,在指令的执行阶段都不必访问存储器,直接访问寄存器,使机器运行速度得到提高(因为寄存器类型的紫菱只需在取指阶段访问一次存储器)。
指令字长
指令字长取决于操作码的长度、操作数地址的长度和操作数地址的个数。
早期的计算机指令字长是固定的,随着计算机的发展,一台机器的指令系统可以采用位数不相同的指令,多次访问存储器,使CPU速度下降,常用的指令设计成单子长或短字长。
操作数类型
地址:无符号整数
数字:定点数、浮点数和十进制数
字符:普遍采用ASCII码
逻辑数据
数据在存储器中的存放方式
存放在存储器或寄存器中,寄存器的位数便可反应机器字长。
存储器存储字长如果为32位,可按字节、半字、字、双字访问。
操作类型
数据传送、算术逻辑操作、移位、转移(无条件转移、条件转移、调用与返回、陷阱Trap与陷阱指令)、输入输出、其他(等待指令、停机指令、空操作指令、开中断指令、关中断指令、置条件码等指令)。
寻址方式
寻址方式分为指令寻址和数据寻址
指令寻址分为顺序寻址和跳跃寻址两种。
数据寻址
指令的地址码字段通常都代表操作数的真实地址,把它称为形式地址,记作A;
操作数的真实地址称为有效地址,记作EA。
1、立即寻址
立即寻址的特点是操作数本身设在指令字内,即形式地址A不是操作数的地址,而是操作数的本身,又称为立即数。
2、直接寻址
直接寻址的特点是,指令字中的形式地址A就是操作数的真实地址。
EA = A
3、隐含地址
隐含地址是指指令字中不明显的给出操作数的地址,其操作数的地址隐含在操作码或寄存器中
EA = A + (ACC)
4、间接寻址
倘若指令字中的形式地址不直接指出操作数的地址,而是指出操作数有效地址所在的存储单元
EA = (A)
5、寄存器寻址
在寄存器寻址的指令中,地址码字段直接指出了寄存器的编号
EA = R
6、寄存器间接寻址
Ri中的内容不是操作数,而是操作数所在的主存单元的地址号,即EA = (Ri)。
7、基址寻址
基址寄存器BR
EA = A + (BR)
8、变址寻址
变址寄存器IX
EA = A + (IX)
9、相对寻址
EA = (PC)+ A
相对寻址也可与间接寻址配合使用
RISC技术
RISC即精简指令系统计算机,与其对应的是CISC,即复杂指令系统计算机。
能否用最常用的20%的简单指令,重新组合不常用的80%的指令功能呢?这便引发出RISC技术。
RISC主要特征
执行程序所需的时间P
P = I * C * T
I是高级语言编译后在机器上运行的机器指令数;
C为执行每条机器指令所需的平均机器周期;
T是每个机器周期的执行时间。
RISC和CISC的比较
1、充分利用VLSL芯片的面积
2、提高计算机运算速度
3、便于设计,可降低成本,提高可靠性
4、有效支持高级语言程序