计组--指令系统--复习专用


前言

学无止境,笔勤不辍。今天,笔者分享关于计组中指令系统的复习知识点…


一、指令系统概述

有关机器指令的介绍,读者可查阅笔者在计组专栏下的相关内容,这里就不赘述了…这里主要介绍一下指令系统:
1.指令系统(指令集):一台计算机的所有机器指令的集合,是计算机软件和硬件的交界口和接口。
2.汇编指令:机器指令的二进制代码的助记符
3.指令信息:1.指令的功能:要执行的操作;2.操作的对象:要处理/参与运算的数据(源操作数);3.操作的结果:存放运算/处理结果的数据(目的操作数);4.下一条指令的地址:指出下一条指令在主存中的地址
不同的CPU在指令格式、指令类型、寻址方式、指令条数等方面有差异...

二、指令结构

机器指令一般包括两部分:1.操作码(OP) 2.地址码
操作码:用于指令该指令所要完成的操作,规定了指令的格式,同时每条指令的操作码是唯一的,反映了指令的条数。
操作码可能是分段的
地址码:包含指令操作数的地址信息/转移类指令下一条指令的位置信息,地址码个数由操作数个数决定。
地址码可以是操作数本身/操作数地址/下一条指令的地址

根据地址数不同,可以分为以下几类:
1.三地址指令:  OP A1 A2 A3,记为(A1)OP(A2)->A3,将A1 A2计算结果存入A3中
2.二地址指令: OP A1 A2 ,记为 (A1)OP(A2)->A1,将A1 A2计算结果存入A1中
3.一地址指令: OP A  一种是单目运算,记为 OP(A)->A;一种是隐含规定操作数
4.零地址指令:OP  一种是无操作数,空指令/动态停机指令HLT;另一种是隐含规定操作数

指令字长:一条机器指令包含的二进制位数

根据长度是否固定,可分为两类:
1.固定指令字长:所有指令的字长均相等,一般等于机器字长
2.可变指令字长:指令字长不固定,一般是字节的整数倍

三、操作数类型

1.立即数类型操作数:是一个常数,存放在指令中,取出指令即得到了操作数,地址码字段本身就是立即数本书,记作imm/Data
2.寄存器类型操作数:存放在CPU通用寄存器堆的某个寄存器中,地址码A是该寄存器的编号(地址),记为Reg[A]/(A)
3.存储器类型操作数:操作数存放在主存单元中,地址码A是其地址信息,此时A可以是直接/间接/形式地址/相对偏移量,取决于寻址方式,而有效的能真正表示操作数在主存中的地址的记为EA,操作数标记为Mem[EA]/(EA)
4.I/O设备操作数,地址码A是其接口地址,记为IO(A)

操作数本身含义(数据类型)可分为:1.数值数据 2.指针/地址 3.位/位串数据 4.字符/字符串 5.逻辑数据
由于指令字长有限,地址码长度也有限,取出的数值要经过扩展再使用。

扩展方式有两种:
1.符号扩展:将字段最高位视为符号位,填充到所有高位,一般用于扩展有符号立即数、相对偏移量
2.零扩展:用0填充所有高位,一般用于扩展无符号立即数、地址信息等

四、指令操作码and扩展技术

指令操作码长度决定了指令的条数

1.定长编码:将操作码放在指令字的一个/几个字段内,编码长度固定
2.变长编码:操作码长度不固定,不同指令操作码长度不一,一般通过操作码扩展方式分散在指令字的不同字段中,可有效压缩操作码的平均长度

操作码扩展技术:将不使用的地址码字段扩展为操作码,扩展时需要留出一个编码用于区分扩展/未扩展指令

五、寻址方式

寻址方式:1.确定本条指令的操作数地址,数据寻址 2.寻找下一条要执行的指令地址,指令寻址

1.指令寻址

1.顺序寻址:程序(指令序列)是顺序存放在存储器中,指令地址也是连续且按顺序递增的,指令按顺序依次执行。(在控制器中设置一个专用的寄存器——程序计数器(PC)来存放指令在主存中的地址以实现顺序寻址。
每取出一条指令,控制器便控制PC自增指令所占主存地址数,使得PC指向下一条指令
2.跳跃寻址:通过转移类指令实现,执行转移指令跳跃到不连续的目标地址(TA)再继续执行。而TA由指令的地址码直接/通过计算给出,然后用TA修改PC值,(TA->PC)

TA获取的四种方法:
1.直接转移:指令地址码直接给出目标地址(TA=A)
2.相对转移:指令地址码+PC得到目标地址(TA=A+PC)
3.寄存器寻址的间接转移:指令地址码给出寄存器号,该寄存器中存储目标地址(TA=Reg(A)  TA=(A)
4.寄存器相对转移:指令中给出寄存器号和相对偏移量,两者相加得出目标地址(TA=(A)+K),这种寻址方式称为变址寻址方式/基址寻址方式的转移

2.数据寻址

数据寻址的方式较多,在指令中设置一个寻址方式码(MOD)来指明寻址方式
此时指令的地址码字段A一般并不是操作数的真实有效地址(EA)而是形式地址,EA由MOD 和 A 共同决定

1.立即寻址:地址码直接给出操作数(常数/立即数),地址码本身就是操作数
2.直接寻址(要访问两次主存):地址码A直接给出操作数有效地址,即EA=A,直接访问A所指存储单元获取操作数
3.间接寻址:地址码A给出存储EA的单元地址,再由EA访问操作数,EA=(A)
4.寄存器寻址:地址码字段给出寄存器编码,通过访问寄存器获取操作数 
5.寄存器间接寻址:地址码给出寄存器所在编码,而该寄存器中存储EA=Reg(A),再通过EA访问主存获取操作数
6.变址寻址:指令形式:OP MOD Rx A EA = (Rx)+A 地址码中包含变址寄存器号和形式地址A(基址),通过访问变址寄存器获取变址值,然后Rx A通过加法得到EA,最后通过EA访问主存获取操作数
7.基址寻址:EA =(Rb)+A,此时,Rb是基址寄存器,存储基址,A则是相对偏移量
8.相对寻址:EA = PC+A PC是当前指令的地址 A是地址码字段(相当于当前指令地址的偏移量)
9.堆栈寻址:堆栈是若干个联系的主存单元构成的后进先出的存储空间,第一个放入堆栈的数据所在的存储单元是栈底,最近放入的数据的存储单元叫栈顶,栈底位置不变,堆栈只能堆栈顶元素进行访问。用一个专用寄存器存放栈顶对应的存储单元的地址->堆栈指针
堆栈指针SP访问堆栈获取操作数/把操作数存入堆栈中。 采用堆栈寻址的指令字中,操作数的有效地址隐含在SP中
10.复合寻址:将以上的集中寻址方式组合...

其余自学…或不考… 因此这里就不给出说明,之后有时间应该会补上…


总结

以上就是今天要讲的内容,本文介绍了计组有关指令系统的相关知识点…希望大家能好好复习,不挂科…笔者后续会再更后面章节的内容…(过一两天,会更一下数据库的知识点)…希望大家多多关注…

  • 20
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值