2022.6.23 🚮 2022.10.11
目录
6.4指令系统(待补充)
6.1指令格式
一、指令操作码与地址码
指令是由操作码和地址码两部分组成的:
操作码字段(OP) | 地址码字段(A) |
1、操作码(OP)
用来指明该指令所要完成的操作,如加法、减法、传送、移位、转移等。
位数反映了机器的操作种类,也即机器允许的指令条数,如果操作码有n位二进制数,则最多可表示2^n种指令。
操作码长度固定:将操作码集中放在指令字的一个字段内。
这种格式便于硬件设计,指令译码时间短,广泛应用于字长较长的、大中型计算机和超级小型计算机以及RISC(Reduced Instruction Set Computer)中。如IBM370和VAX-11系列机,操作码长度均为8位。
操作码长度不固定:指令操作码分散在指令字的不同字段中。
这种格式可有效地压缩操作码的平均长度,在字长较短的微机中被广泛采用。如PDP-11,Intel8086/80386等。
2、地址码(A)
用来寻找运算所需要的操作数(源操作数和目的操作数)。
地址码包括:源操作数地址、目的操作数地址和下一条指令的地址。
地址含义:主存的地址、寄存器地址或者I/O设备地址。
(1)三地址指令:
(A1)OP(A2)→A3;
OP | A1 | A1 | A3 |
(2)二地址指令:
(A1)OP(A2)→A1;A1:目的操作数;A2:源操作数;
OP | A1 | A2 |
(3)单地址指令:
(ACC)OP(A)→ACC;OP(A)→A;单目操作:如NEG(取反,即加负号)、INC(自增1)等指令;
OP | A |
(4)零地址指令
不涉及操作数:如NOP、HLT指令;操作数隐含:如PUSH、POP指令
对于寄存器类型的操作数,地址A指寄存器编号。
OP |
3、操作数类型
按照指令处理的操作数存放位置分:
存储器类型:操作数存放在主存中,A为其地址信息;
寄存器类型:操作数存放在CPU的通用寄存器中,A为寄存器号;
立即数类型:操作数存放在指令(地址字段)中;
按照指令处理的操作数性质分:
地址(addresses):存储器地址,是无符号整数;
数字(numbers):整数、浮点数、十进制数;
字符(characters);
逻辑数据:真假两种状态;
二、指令字长和操作码扩展
1、指令字长度
机器指令是用二进制机器字来表示的,表示一条指令的机器字,就称为指令字。一条指令中所包含的二进制码的位数,称为指令字长度或指令字长。它主要取决于操作码的长度、操作数地址的长度和操作数地址的个数。不同机器的指令字长是不相同的。
按指令长度固定与否可以分为:
固定指令字长的指令:所有指令的字长均相等,一般等于机器字长。
可变指令字长的指令:指令字长不固定,通常取字节的整数倍。
按照指令字长与机器字长的关系分类:
短格式指令:指令字长小于或等于机器字长。
长格式指令:指令字长大于机器字长。
一个机器的指令系统中,短格式指令和长格式指令可以并存,通常将最常用的指令设计成短格式指令,可以节省存储空间、提高指令的执行速度。
2、指令操作码扩展
固定操作码长度的格式和可变操作码长度格式
在设计操作码不固定的指令系统时,应安排指令使用频度高的指令占用短的操作码,对使用频度低的指令可占用较长的操作码,这样可以缩短经常使用的指令的译码时间。
采用扩展操作码技术,使操作码的长度随地址数的减少而增加,即不同地址数的指令可以具有不同长度的操作码,从而可以有效地缩短指令字长。指令操作码扩展技术是一种重要的指令优化技术,它可以缩短指令的平均长度,增加指令字所能表示的操作信息。但指令操作码扩展技术需要更多的硬件支持,它的指令译码更加复杂,使控制器设计难度增大。
eg:
6.2寻址方式
一、指令寻址
1、顺序寻址方式
控制器中使用程序计数器PC来指示指令在内存中的地址。在程序顺序执行时,指令的地址码由PC自加1得出。
指令在内存中按顺序存放,当顺序执行一段程序时,根据PC从存储器取出当前指令,PC自动+1,然后执行这条指令;接着又根据PC指示从存储器取出下一条指令,PC自动+1,执行......。
2、跳跃寻址方式
当程序执行转移指令时,程序不再顺序执行,而是跳转到另一个地址去执行,此时,由该条转移指令的地址码字段可以得到新指令地址,然后将其置入PC中。
二、数据寻址
指令的地址码字段,通常都不代表操作数的真实地址,把它称作形式地址,记为A。操作数的真实地址称为有效地址,记作EA,它是由寻址方式和形式地址共同来确定的。
6.3指令类型
1.数据传送指令
包括寄存器与寄存器、寄存器与存储单元、存储单元与存储单元之间的传送。
2.算术逻辑运算指令
实现算术运算(加、减、乘、除等)和逻辑运算(与、或、非、异或)。有些计算机还设置有位操作指令,如位测试(测试指定位的值)、位清零、位求反指令等。
3.移位操作指令
可分为算术移位、逻辑移位和循环移位。
4.程序控制类指令
5.堆栈操作指令
6.输入输出指令
它完成从外设端口读入一个数据到CPU的寄存器内,或将数据从CPU的寄存器输出到某外设的端口中。
7.处理器控制指令
包括等待指令、停机指令、空操作指令、开中断指令等。
8.特权指令
特权指令只能给操作系统或其他系统软件,而不能提供给用户使用,以防止破坏系统或其他用户信息 。
6.4指令系统
6.5本章小结
机器指令由操作码字段和地址码字段组成。扩展操作码技术实现指令优化,但也增加了硬件设计难度。
指令的寻址方式包括指令寻址和数据寻址,指令寻址主要是顺序和跳跃两种方式;数据寻址有许多种寻址方式,其目的是获得本条指令执行所需要的操作数。
根据指令的功能,可将指令分类为数据传送、算术逻辑运算类、移位操作类、转移类、堆栈操作类、输入输出类等指令。
指令系统的设计应满足完备性、有效性、规整性、兼容性四个方面的要求。CISC指令系统庞大的指令集及其存在问题,RISC指令以它简洁、高效等特点而得到快速地发展。
通过两种指令系统例子,细述了模型机指令系统设计方法,使读者结合实际理解和掌握指令系统的设计方法。