【计算机组成原理】王道指令系统学习笔记 |
您所在的位置:网站首页 › 指令的地址码是不可缺少的吗 › 【计算机组成原理】王道指令系统学习笔记 |
目录 指令格式 按指令数目分类: 按指令长度分类: 按操作码的长度分类 按操作类型分类 拓展操作码 定长操作码与拓展操作码 指令寻址 顺序寻址 跳跃寻址 数据寻址 十种寻址方式 CISC和RISC 指令格式何为指令?(指令定义) 指令:指令又称为机器指令,是指计算机执行某种操作的命令,是计算机运行的最小功能单位。一台计算机的所有指令的集合构成该计算机的指令系统,也成指令集。(一台计算机只能执行自己的指令系统,不能执行其他系统的指令) 比如说x86架构和ARM架构,目前的Intel电脑芯片基本上都是支持x86架构的,而手机芯片一般是使用ARM架构,因此在手机上的app不能够直接在电脑上运行。因为两个不同的架构所拥有的指令系统是不一样的。 一条指令就是及其语言的一个子句,它是一组有意义的二进制代码。一条指令通常要包括操作码字段和地址码字段两个部分。根据一条指令可能包含几个地址码数目的不同,可将指令的分为零地址指令、一地址指令、二地址指令... 按指令数目分类: 零地址指令指令含义:OP(A1)--->A1 A1为某个主存地址 完成一条指令需要3次访存:取指--->读A1--->写A1 需要两个操作数,但其中一个操作数隐含在某个寄存器(如隐含在ACC)指令含义:(ACC)OP(A1)--->ACC 完成一条指令需要2次访存:取指--->读A1(存结果到寄存器中不需要执行,因此两次就可以了) 二地址指令常用于两个操作数的算数运算、逻辑运算相关指令 指令含义:(A1)OP(A2)--->A1 完成一条指令需要访存4次:取指--->读A1--->读A2--->写A1 三地址指令常用于需要两个操作数的运算符、逻辑运算相关指令 指令含义:(A1)OP(A2)--->A3 完成一条指令需要访存4次:取指--->读A1--->读A2--->写A3 四地址指令指令含义:(A1)OP(A2)--->A3 ,A4=下一条将要执行指令的地址 完成一条指令需要访存4次:取指--->读A1--->读A2--->写A3 按指令长度分类:指令字长会影响取指令所需时间。如:机器字长=存储字长=16bit,则读取一条双字长指令需要两次访存 定长指令字结构:指令系统中所有指令的长度都相等 变长指令子结构:指令系统中各种指令的长度不等 指令字长一条指令的总长度(可能会改变) 机器字长CPU进行一次整数运算所能处理的二进制数据的位数(通常和ALU直接相关) 存储字长一个存储单元中的二进制代码位数(通常和MDR位数相同) 按操作码的长度分类 定长操作码指令系统中所有指令的操作码长度相同 n位-->条指令 控制器的译码电路设计简单,但灵活性较低 可变长操作码指令系统中各指令的操作码长度可变 控制器的译码电路设计复杂,但灵活性较高 定长指令字结构+可变长操作码------>拓展操作码指令格式 按操作类型分类数据传送类:进行主存与CPU之间的数据传送 程序控制类:改变程序执行的顺序 算数类:实现了各种运算,算数、逻辑、移位 输入输出类(I/0) :进行CPU和I/0设备之间的数据传送 数据传送(数据传输类)LOAD作用:把存储器中的数据放到寄存器中去。 STORE作用:把寄存器中的数据放到存储器中去。 算术:加、减、乘、除、增1、减1、求补、浮点运算、十进制运算 逻辑:与、或、非、异或、位操作、位测试、位清除、位求反 移位操作(运算类)算术移位、逻辑移位、循环移位(带进位和不带进位) 转移操作(程序控制类)无条件转移JMP 条件转移 JZ:结果为0 ; JO: 结果溢出; JC:结果有进位。 调用和返回CALL和RETURN 陷阱(Trap)与陷阱指令 输入输出操作(输入输出类I/O)CPU寄存器与I0端口之间的数据传送(端口即I0接口中的寄存器) 拓展操作码每个指令字长是16位,每个地址码占4位 4位基本操作码若全部用于三地址指令,则有16条。 但至少须将1111留作扩展操作码之用,即三地址指令为15条; (留下1111拓展码的作用是为了让计算机在识别前4位为1111时能够知道这是一条二地址码,而不是一条三地址码。) 1111 1111留作扩展操作码之用,二地址指令为15条; 1111 1111 1111留作扩展操作码之用,一地址指令为15条; 零地址指令为16条; 在设计操作码指令格式时的注意点: 不允许短码是长码的前缀,即短操作码不能与长操作码的前面部分的代码相同;各指令的操作码一定不能重复。(这就是为什么留下1111为拓展码的原因了!) 通常情况下,对使用频率较高的指令,分配较短的操作码;对使用频率较高的指令,分配较长的操作码,从而尽可能减少指令译码和分析的时间。 拓展操作码举例定长操作码:在指令字的最高位部分分配固定的若干位(定长)表示操作码; 一般n位 操作码字段的指令系统最大能够表示条指令。.优:定长操作码对于简化计算机硬件设计,提高指令译码和识别速度很有利;缺:指令数量增加时会占用更多固定位,留给表示操作数地址的位数受限。拓展操作码(不定长操作码):全部指令的操作码字段的位数不固定,且分散地放在指令字的不同位置上。 最常见的变长操作码方法是扩展操作码,使操作码的长度随地址码的减少而增加,不同地址数的指令可以具有不同长度的操作码,从而在满足需要的前提下,有效地缩短指令字长。优:在指令字长有限的前提下仍保持比较丰富的指令种类;缺:增加了指令译码和分析的难度,使控制器的设计复杂化。 指令寻址 顺序寻址如何确定下一条指令的地址? 程序计数器PC--->指明下一条指令的存放地址 (PC)+1---->PC 若系统采用定长指令子结构,指令字长=存储字长=16bit=2B,主存按字编址 指令寻址下一条欲执行的指令的地址始终是由程序计数器PC给出的。 归纳为 (PC)+“1”---->PC 这里的1理解为1个指令字长,实际加的值会因指令长度、编址方式而不同! 按字编址按字编址和按字节编址的疑惑解答: 这里的解答是在参考白芷加茯苓的回答后我的理解。 为什么当时不能理解这个问题,首先是不清楚字和字节的概念。 存放一个机器字的存储单元,通常称为字存储单元,相应的单元地址叫字地址。存放一个字节的存储单元,称为字节存储单元,相应的地址称为字节地址。如果计算机中可编程的最小单位是字存储单元,则该计算机称为按字寻址的计算机。如果计算机中可编程的最小单位是字节,则该计算机称为按字节寻址的计算机。一个机器字可以包含数个字节,所以一个存储单元也可以包含数个能够单独编制的字节地址。例如,一个16位二进制的字存储单元可存放两个字节,可以按字编址,也可以按字节编址。当用字节编址时,16位的存储单元占两个字节地址。因此,一条指令中包含了两个字节,于是相邻的两条指令之间的地址间隔自然就是2了。 变长指令字结构确定本条指令的地址码指明的真实地址 在计算机内部,同一时刻可能存在许多个程序在并发的进行,因此不可能保证运行的程序从地址为0开始的地方开始存储,比如下面右图中从100开始存储,当执行到JMP时并不会向左边图中一样跳转到LDA,此时与预期执行的第107程序并不相符,这样显然是不合理的。 综上所述,如何解读地址码7的含义?可以理解为从起始地址码开始向后偏移7个。 十种寻址方式一地址指令: 二地址指令 加上寻址特征,求出操作数的真实地址则称为---->有效地址 偏移寻址包括基址寻址、变址寻址和相对寻址三类。 基址寻址:以程序的起始存放地址作为“起点”注:基址寄存器是面向操作系统的,其内容由操作系统或管理程序确定。在程序执行过程中,基址寄存器的内容不变(作为基地址),形式地址可变( 作为偏移量)。 变址寻址:程序员自己决定从哪里作为“起点”注: 变址寻址:有效地址EA等于指令字中的形式地址A与变址寄存器IX的内容相加之和,即EA= (IX)+A,其中IX可为变址寄存器(专用),也可用通用寄存器作为变址寄存器。变址寄存器是面向用户的,在程序执行过程中,变址寄存器的内容可由用户改变(作为偏移量),形式地址A不变(作为基地址)优点: 在数组处理过程中,可设定A为数组的首地址,不断改变变址寄存器lX的内容,便可很容易形成数组中任一数据的地址,特别适合编制循环程序。 此外,在实际运用过程中,常常会使用多种寻址方式进行复合来寻找地址。比如基址寻址&变址寻址的复合寻址方式。 相对寻址:以程序计数器PC所指地址作为“起点”优点: 操作数的地址不是固定的,它随着PC值的变化而变化,并且与指令地址之间总是相差一个固定值,因此便于程序浮动(f段代码在程序内部的浮动)。相对寻址广泛应用于转移指令。声明:本文图片来源于王道课程!本文仅用于学习。 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |