408计算机组成原理学习笔记——指令系统(上)

简介: 408计算机组成原理学习笔记——指令系统

1.指令格式

1.1.指令的基本格式

1.操作码:干什么;地址码:对象

2.零地址指令:没有操作数或者操作数隐含

c22ab190846d4830b408e9f8797047c0.png

3.一地址指令:单操作数或者双操作数中一个隐含一个给出

1c8bb3ba2a8846c4ad29760e76a63b7d.png

4. 二三地址指令:区别在于运算的结果写入位置d086064be8ba4d1c9fbe11db5e7814b3.png

5.四地址指令:除最后一步需要跳转指令地址外,跟三地址指令相同

af872f17979e450ea71336bc78a86331.png

7.在指令总长度不变的情况下,地址码个数越多,寻址能力越差(每个地址码的个数更少)

1.1.2.按指令长度分类

指令字长可能会发成变化,但是机器字长、存储字长不变b45d3107a6a84388a8ee260242570da4.png

1.1.3.按操作码长度分类45186645b65242c8bd2621622bca0b90.png

1.1.4.按操作类型分类

转移类指令将会导致PC(下一跳指令的地址)的值发生改变

0a4b038f5ea54e77b6a8acbf5b375d8b.png

1.2.扩展操作码指令格式

扩展操作码指令格式:定长指令字结构 + 可变长操作码(不同地址数的指令使用不同长度的操作码)

设地址长度为n,上一层留出m种状态,下一层可以扩展出m * 2 ^ n种状态


该扩展操作码方法下,每个地址/操作数都需要保留某些特定二进制数用于CPU判断是哪一种指令

7145b08a5c8c4750aac0cc19e01b255d.png

①15条三地址指令,至少需要4位表示,使用0000 - 1110,剩余1111

②12条二地址指令,至少需要4位表示,使用0000 - 1011,剩余1100、1101、1110、1111

③62条一地址指令,至少需要6位表示,但是加上②中所剩余的四个地址,4 * 4位的方式可以表示64条指令,剩余1110 - 1111

④32条零地址指令,至少需要5位表示,但是加上③中所剩余的两个地址,2 * 4位的方式可以表示32条指令

582e11ec7f25485d9ebb216073a4c445.png

CPU会读入这16位指令(0-15位):

①判断0-3位是否为全1,非全1则是三地址指令,全1则进行②

②判断4-5位是否为全1,非全1则是二地址指令,全1则进行③

③判断6-10位是否为全1,非全1则是一地址指令,全1则为零地址指令

2.指令的寻址方式

2.1.指令寻址

PC:指明下一条指令的存放地址

2.1.1.顺序寻址

下一条指令的地址:(PC)+ “1”→PC(1为指令字长)

1.当前指令被取出时,PC进行+1操作

2.PC+1操作是根据不同的场合加不同的1(定长指令)

①设字长为16位,按字编址时,每个字都刚好存放一个指令,因此,PC + 1

②设字长为16位,按字节编址时,每两个字节存放一个地址,因此,PC + 2

3.变长指令:无法预估指令长度,可能需要多次访存,每次读入一个字

设字长为16位,按字节编址

①读入一个完整的字,根据操作码判断这条指令的总字节数 n

②若这条指令的长度>字长,则读入剩余指令,并且PC + n

③若这条指令的长度 = 字长,则PC + 2

2.1.2.跳跃寻址

由转移指令给出

1.当取出转移指令后,PC还是会先进行 PC + 1的操作

2.当执行转移指令时,PC的内容将会被转移指令所改变

2.2.数据寻址

2.2.1.六种寻址

1.确定本条指令的地址码指明的真实地址

2.指令增加寻址特征位,用于判断该如何解读形式地址(A)的含义,从而得到有效地址(EA)

①直接寻址:

Ⅰ访存:取指令1次,取A中的地址1次

Ⅱ缺点:寻址范围不能扩展(形式地址位数有限);当操作数的地址发生改变时,指令失效(仍然指向改变前的地址)e900a6fee404421cba2d7435fdf24921.png

②间接寻址:

Ⅰ访存:取指令1次,取A中EA的地址1次,找到EA中的地址1次(一次间接两次寻址)

可以进行多次间接寻址,当开头第一位为1时,说明该地址存储的地址仍然不是最终的有效地址;当开头第一位为0时,说明该地址存储的地址为最终的有效地址

Ⅱ优点:主存中EA的位数可以远大于形式地址的长度;函数之间可以相互调用,方便返回

Ⅲ缺点:多次访存导致效率降低

a8ecb211a225487e89e84e0fcadea7d2.png

③寄存器寻址:

Ⅰ访存:取指令1次,执行指令时,访问的是寄存器

Ⅱ优点:速度快(执行指令无需再次访存)、指令短(寄存器个数少)87734f7743c64e1088cc4b6e8c1ac434.png

④寄存器间接寻址:

Ⅰ访存:取指令1次,取出寄存器存放的主存地址EA 0次,取出主存EA中存放的地址1次

Ⅱ优点:比一般间接寻址快(EA存放在寄存器中,取出无需访存)

b53de420bc724e9492a5b83297410982.png

⑤隐含寻址:6f2f7b8587e94d1385f8e2a8021552af.png

⑥立即寻址:  访存:仅取指令一次,无需再次访存寄存器/主存

09040feec09249c58fb13944b5bcd156.png

2.2.2.偏移寻址

1.偏移寻址包括基址寻址、变址寻址和相对寻址

2.三者都是经过偏移量寻址,区别在于起点的不同

3.都仅需访存一次

①基址寻址(基址寄存器(BR)Base Address Register)):EA = (BR)+ A(多道程序)bcb7669ca08e4f19ad39e6ee2bd78b22.png

1.基址寄存器中存放的是当前程序的首地址(基地址,运行中基址寄存器中的内容不变,形式地址作为偏移量可变)

2.基址寄存器可以是专用,也可以是指定一个通用寄存器(需要在指令中指明是哪个通用寄存器)

3.便于程序浮动(整段程序在内存中的浮动),多道程序并发运行(仅需修改基址寄存器的内容实现正确寻址,相较于直接寻址,直接寻址需要修改每条指令的地址);可以增加寻址范围(基址寄存器的位数大于形式地址位数,但由于形式地址决定偏移量,因此偏移量有限

4.基址寄存器面向操作系统(用户可以决定使用哪个基址寄存器,但内容由操作系统决定)

②变址寻址(IX——index register):EA = (IX)+ A(数组、循环程序)

1.变址寄存器中的内容(可变)作为偏移量,形式地址A(不变)作为基地址(与基址寻址刚好相反):可以通过不断的改变变址寄存器中的内容,访问数组中的元素,因此适合循环程序

2.变址寄存器可以是专用,也可以是指定一个通用寄存器(需要在指令中指明是哪个通用寄存器)

3.变址寄存器面向用户(用户可以修改变址寄存器的内容)

4.变址寄存器的作用:9e1c037482ed43e79c095dfae714cd2e.png

采用直接寻址的方式:每进行一轮循环都需要一条相应的直接寻址指令

18c78a12d61242fe8ab57f38b883f46e.png

采用变址寻址的方式:通过改变IX的内容(用比较的IX内容的方式)循环执行程序

③相对寻址(转移指令)

1.PC的内容加上指令中形式地址A形成操作数的有效地址,即EA = (PC)+ AA为相对于PC的偏移量,正负都可,用补码表示

2.PC在取出使用相对寻址的指令时,就会进行+ “1”操作,即相对寻址是相对于下一条指令的存放地址的偏移量

3.优点:无论代码被放在什么位置,都不用更改跳转指令的地址码(若使用直接寻址的方式,则每次都需要更改)便于程序浮动(一段代码在程序内部浮动),广泛被用于转移类指令

2.2.3.堆栈寻址

1.操作数存放在堆栈中,隐含使用堆栈指针(SP:Stack Pointer)作为操作数地址

2.堆栈指针存在专门的寄存器中,其指向栈顶元素

3.堆栈两种实现方式:

①专用寄存器:不同情况下对SP的操作顺序和操作方式不同(参考数据结构栈),取指令需访存,执行指令无需访存8e8401b3cd1d41c0a1c31f151f403352.png


②主存中开辟堆栈空间:每次操作都需要进行访存

相关文章
|
7月前
【计算机组成原理】计算机组成原理(三)
计算机组成原理(三) 奇偶校验码: 校验原理:
54 0
|
2天前
|
存储
【计算机组成原理】指令系统
【计算机组成原理】指令系统
93 0
【计算机组成原理】指令系统
|
7月前
|
C语言
【计算机组成原理】综合测试
【计算机组成原理】综合测试
85 0
|
8月前
|
C语言
计算机组成原理相关知识
计算机组成原理相关知识
74 0
|
12月前
|
存储 算法 芯片
计算机组成原理(三)
计算机组成原理(三)
109 0
|
存储 芯片 内存技术
计算机组成原理(四)
计算机组成原理(四)
131 0
|
存储 开发框架 Unix
计算机组成原理(一)
计算机组成原理(一)
90 0
|
存储 算法
计算机组成原理(五)
计算机组成原理(五)
110 0
计算机组成原理<六>——指令系统(二)
计算机组成原理<六>——指令系统
计算机组成原理<六>——指令系统(二)