文章目录:
一:指令格式
1.指令的基本格式(操作码+地址码)
1.结构
1.1 一条指令=操作码+地址码,其中地址码可能有0~4个
1.2 操作码︰指出指令中应该执行什么性质的操作和具有何种功能
1.3 地址码︰给出被操作的信息(指令或者数据)的地址
2.根据操作数地址码数目分类
2.1 零地址指令
OP
只有操作码OP,没有给出地址
指令用途:空操作指令,停机指令,关中断指令
零地址的运算类指令仅使用在堆栈计算机中
2.2 一地址指令
oP A1
指令用途
只有目的操作数的单操作数指令 加1减1求反求补
隐含约定目的地址的双操作数指令
2.3 二地址指令
OP A1 A2
指令用途
算术和逻辑运算指令
往往需要两个操作数,分别给出目的操作数和源操作数地址,目的操作数地址还用于保存本次的运算结果
2.4 三地址指令
OP A1 A2 A3(结果)
指令用途︰算术和逻辑运算指令,相对于二地址指令,结果直接存放在A3中
需要访问4次存储器:
取指令(1次)
取两个操作数(2次)
存放结果(1次)
2.5 四地址指令
OP A1 A2 A3(结果) A4(下址)
指令用途︰算术和逻辑运算指令,相对于三地址指令多了下一条执行命令的地址(A4)
3.按指令长度分类
3.1 指令字长:一条指令的总长度(可能会变)
3.2 机器字长:CPu进行一次整数运算所能处理的二进制数据的位数(通常和ALU直接相关)
3.3 存储字长:一个存储单元中的二进制代码位数(通常和MDR位数相同)
单字长指令︰长度等于机器字长
双字长指令∶长度等两倍机器字长
半字长指令:长度等于半个机器字长
4.按操作码长度分类
4.1 定长指令字结构∶所有指令长度相同
控制器的译码电路设计简单,但灵活性较低
4.2 变长指令字结构∶各种指令的长度不同
控制器的译码电路设计复杂,但灵活性较高
5.按操作类型分类
5.1 数据传送:进行主存为CPU之间的数据传送
LOAD 作用:把存储器中的数据放到寄存器中
STORE 作用:把寄存器中的数据放到存储器中
5.2 算术逻辑操作:运算类
算术:加、减、乘、除、增1、减1、求补、浮点运算、十进制运算
逻辑:与、或、非、异或、位操作、位测试、位清除、位求反
5.3 移位操作
算术移位、逻辑移位、循环移位(带进位和不带进位)
5.4 转移操作:改变程序执行的顺序
无条件转移JMP
条件转移Jz:结果为0;JO:结果溢出;JC:结果有进位
调用和返回CALL和RETURN
陷阱(Trap)与陷阱指令
5.5 输入输出操作:进行CPU和I/O设备之间的数据传送
CPu寄存器与IO端口之间的数据传送(端口即IO接口中的寄存器)
2.定长操作码指令格式
优点∶定长操作码对于简化计算机硬件设计,提高指令译码和识别速度很有利
缺点︰指令数量增加时会占用更多固定位,留给表示操作数地址的位数受限
3.扩展操作码指令格式
实现︰全部指令的操作码字段位数不固定,分散在指令字的不同位置上 足长指令字结构+可变长操作码 优点:丰富了指令的种类 缺点:增加了指令译码和分析难度,控制器设计变的复杂 注意∶1.短码不能是长码的前缀 2.指令操作码不能重复
扫描二维码关注公众号,回复: 13829700 查看本文章
二:指令寻址方式
1指令寻址和数据寻址
指令寻址:确定下一条要执行的指令的存放地址;由程序计数器PC指明
顺序寻址:通过程序计数器(PC)加1,自动生成下一条指令的地址
此处的"1"要理解为1个指令字长
每次取指令结束后,一定会PC+"1"
跳跃寻址:通过转移类指令实现,是否跳跃受到状态寄存器和操作数的控制
执行转移类指令导致的PC值改变
跳跃到的地址分类:跳跃的结果是当前指令修改pc值
绝对地址:由标记符直接得到
相对地址:相对于当前指令地址的偏移量
数据寻址:确定本条指令的地址码指明的真实地址
在指令中表示一个操作数的地址
结构∶操作码+寻址特征+形式地址A
2.常见的数据寻址方式
隐含寻址:不访存 不显示的给出操作数地址,在指令中隐含操作数地址 优点:有利于缩短指令字长 缺点:增加存储操作数或隐含地址的硬件 立即(数)寻址:不访存 地址字段给出的不是操作数的地址,而是操作数本身,又称为立即数 优点:不需要访问主存,指令执行时间最短。 缺点:位数限制了立即数的范围 直接寻址:访存1次 指令字中的形式地址就是真实地址 优点:访问一次主存,不需要专门计算操作数的地址 缺点:形式地址的位数限制了寻址范围,操作数地址不易修改 间接寻址: 指令的地址字段给出存储地址信息的地址(类似于套娃) 优点:扩大了寻址范围,方便编制程序 缺点︰需要多次访存,访问速度过慢,这种寻址方式不是特别常用 一般问到扩大寻址范围,通常指寄存器间接寻址访存多次(具体看几次间接寻址) 寄存器寻址:不访存 指令字中直接给出操作数所在的寄存器编号 优点:不访问主存,执行速度快,支持向量/矩阵运算 缺点∶寄存器价格高昂,寄存器中的寄存器个数有限
偏移寻址
基址寻址(多道程序):将CPU中基址寄在器(BR)的内容加上指令格式中的形式地址A,而形成操作数的有效地址,即EA=(BR)+A 注:基址寄存器是面向操作系统的,其内容由操作系统或管理程序确定。 在程序执行过程中,基址寄存器的内容不变(作为基地址),形式地址可变(作为偏移量)。 变址/偏移寻址(循环程序 数组问题):有效地址EA等于指令字中的形式地址A与变址寄存器x的内容相加之和,即EA=(IX)+A, 其中Ix可为变址寄存器(专用),也可用通用寄存器作为变址寄存器 注:变址寄存器是面向用户的,在程序执行过程中,变址寄存器的内容可由用户改变(lX作为偏移量), 形式地址A不变(作为基地址) 基址&变址复合寻址 先基址后变址寻址:EA=(IX)+((BR)+A) 相对寻址(转移指令):把程序计数器Pc的内容加上指令格式中的形式地址A而形成操作数的有效地址, 即EA=(PC)+A,其中A是相对于Pc所指地址的位移量,可正可负,补码表示。 优点:操作数的地址不是固定的,它随着Pc值的变化而变化,并且与指令地址之间总是相差一个固定值, 因此便于程序浮动(一段代码在程序内部的浮动相对寻址广泛应用于转移指今
堆栈寻址
堆栈寻址:操作数存放在堆栈中,隐含使用堆栈指针(SP)作为操作数地址 堆栈是存储器(或专用寄存器组)中一块特定的按“后进先出(LIFO)”原则管理的存储区, 该存储区中被读/写单元的地址是用一个特定的寄存器给出的,该寄存器称为堆栈指针(SP)。
三:CISC和 RISC概念(两种设计方法)
基本概念: 指令系统 CISC:复杂庞大 RISC:精简简单 指令数目 CISC:大于200条 RISC:小于100条 指令字长 CISC:不固定 RISC:定长 访存指令 CISC:不加限制 RISC:只有load和store 指令执行时间 CISC:相差较大 RISC:绝大多数在一个周期内完成 指令的使用频度 CISC:相差很大 RISC:绝大多数在一个周期内完成 通用寄存器的数量 cISC:较少 RISC:较多 目标代码 CISC:难以优化编译生成高效目标代码 RISC:采用优化编译程序,生成代码高效 控制方式 CISC:绝大多数采用微程序控制 RISC:绝大多数采用组合逻辑控制 指令流水线 CISC:可以实现 RISC:必须实现 RISC优点 采用组合逻辑控制,硬布线使用较少 运算速度更快 设计方便,可靠性高,机器设计周期短,逻辑简单 有利于编译程序代码优化