文章目录
指令的基本概念指令格式地址码四地址结构指令三地址结构指令二地址结构指令一地址结构指令零地址结构指令
操作码定长操作码扩展操作码(不定长操作码)
指令的基本概念
指令(又称机器指令)
指示计算机执行某种操作的命令,是计算机运行的最小功能单位
指令系统
一台计算机的所有指令的集合构成该机的指令系统,也称为指令集
指令系统是CPU设计的依据,是软件设计的基础,是硬件和软件间的界面,直接影响计算机系统性能
【注】一台计算机只能执行自己指令系统中的指令,不能执行其他系统的指令
指令格式
一条指令就是机器语言的一个语句,它是一组有意义的二进制代码
一条指令通常要包括操作码字段和地址码字段两部分
操作码
操作码指明指令所要完成的操作操作码的位数反映了机器的操作种类 地址码
地址码直接给出操作数或者操作数的地址根据地址的个数,可以分为四地址指令、三地址指令、二地址指令、一地址指令和零地址指令
地址码
根据地址的个数,可以分为四地址指令、三地址指令、二地址指令、一地址指令和零地址指令
四地址结构指令
4个地址码字段各占6位,指令操作数直接寻址范围为
2
6
=
64
2^6=64
26=64 ;完成一条指令需要访存4次
三地址结构指令
3个地址码字段各占8位,指令操作数直接寻址范围为
2
8
=
256
2^8=256
28=256 ;完成一条指令需要访存4次
二地址结构指令
2个地址码字段各占12位,指令操作数直接寻址范围为
2
12
=
4
K
2^{12}=4K
212=4K ;完成一条指令需要访存4次
一地址结构指令
字段占24位,指令操作数直接寻址范围为
2
24
=
16
M
2^{24}=16M
224=16M
零地址结构指令
操作码
定长操作码
在指令字的最高位部分分配固定的若干位(定长)表示操作码
一般n位操作码字段的指令系统最大能够表示
2
n
2^n
2n 条指令优点:定长操作码对于简化计算机硬件设计,提高指令译码和识别速度很有利缺点:指令数量增加时会占用更多固定位,留给表示操作数地址的位数受限
扩展操作码(不定长操作码)
全部指令的操作码字段的位数不固定,且分散地放在指令字的不同位置上
最常见的变长操作码方法是扩展操作码,使操作码的长度随地址码的减少而增加,不同地址数的指令可以具有不同长度的操作码,从而在满足需要的前提下,有效地缩短指令字长优点:在指令字长有限的前提下仍保持比较丰富的指令种类缺点:增加了指令译码和分析的难度,使控制器的设计复杂化
在设计扩展操作码指令格式时,必须注意以下两点:
不允许短码是长码的前缀,即短操作码不能与长操作码的前面部分的代码相同各指令的操作码一定不能重复通常情况下,对使用频率较高的指令,分配较短的操作码;对使用频率较低的指令,分配较长的操作码,从而尽可能减少指令译码和分析的时间
3种指令操作码部分不得重叠,否则无法区分,译码设双操作数指令数为k, 显然
k
<
2
8
k<2^8
k<28
2
8
−
k
2^8-k
28−k 为多余状态,可用于表示其他类型指令可用于单操作数指令的条数 =
(
2
8
−
k
)
∗
2
12
(2^8-k)*2^{12}
(28−k)∗212,
2
12
2^{12}
212 是多余12 位组合
【例1】
【解】
三地址指令有29条,所以其操作码至少为5位(因为
2
5
=
32
2^5=32
25=32 个操作码,可以表示29条指令),以5位进行计算,它剩余
32
−
29
=
3
32-29 = 3
32−29=3 种操作码给二地址,而二地址另外多了 6 位给操作码(因为每个地址码的位数为6位),因此其数量最大达
3
×
2
6
=
192
3 × 2^6 = 192
3×26=192 (剩余的3个操作码为二地址指令提供了最多3个操作码,每个操作码最多有64种可能性(总共 3×64=192 种可能性)),所以指令字长最少为 23 位,因为计算机按字节编址,需要是8的倍数,所以指令字长至少应该是24位,选A
【例2】设某指令系统指令字长16位,每个地址码为6位。若要求设计二地址指令15条、一地址指令34条,问最多还可设计多少条零地址指令?
【例3】
指令格式的选择应遵循的几条基本原则
应尽量短要有足够的操作码位数指令编码必须有唯一的解释,否则是不合法的指令指令字长应是字节的整数倍合理地选择地址字段的个数指令尽量规整
参考文章:指令系统——指令格式(详解)