挑战408——组成原理(17)——指令格式

好久没更新了,放元旦本来打算跨个年,可惜外面太冷。还是我在家里写写文章吧。
由开始的时候我们知道,计算机能解题,是由于机器本身存在一种语言,它既能理解人的意图,又能被机器本身识别。机器语言,是由一条条语句构成的,每一条语句又能准确的表达某种语义(比如某种操作数,参与操作的数,或者其他的信息在何处)。而计算机就是通过连续执行每一条机器语句而实现全自动工作的。所以,人们把计算机执行某种操作的命令,称为机器指令。而一台计算机能执行的全部指令集合称作指令系统
机器的指令系统,集中反映了机器的功能。一台机器只能执行自己指令系统中的指令,其他系统的指令它是完全看不懂。因此说,指令系统就是计算机的语言(所以有时候,C语言的程序在不同的机器中结果不同)。所以有条件的话,尽量做兼容机。
指令是计算机运行的最小功能单位,而指令系统是计算机的主要属性,介于硬件和软件之间。
在这里插入图片描述

指令格式

影响计算机指令格式的因素有:机器字长,存储器容量,指令的功能
而指令通常需要反映以下几点信息:

  • 作何操作
  • 如需要操作,去哪取指令呢?
  • 结果送至何处
  • 有无下一条指令?有的话去何处取?

而一条指令通常包括两个方面:
在这里插入图片描述
解释如下:

  1. 操作码:表示该指令应该进行什么性质的操作,如加减乘除,取数,存数等等。通常其位数反映了机器的操作种类,也就是机器允许的指令数(举个例子,如果操作码有7位,那么这个机器最多可以包含2^7 = 128条操作指令)。操作码也分为定长操作码(用于指令字长较长的情况如RISC)和不定长操作码
  2. 地址码:表示被操作数,操作数,以及操作结果和下一条指令地址(这里的地址,可以主存地址,寄存器地址甚至是I/O地址)。根据地址码中字段数目的不同,常常分为下列的四种地址码:(假设指令字长为32位)
    • 四地址码
      在这里插入图片描述
      该指令完成的是(A1)OP(A2) ->A3.后续的指令地址可以任意填写(即A4),那么它的寻址能力就是2^6 = 64.如果指示的地址字段均是指的主存地址,则一共需要访问4次存储器(因为无论作何操作都需要取指令),然后取两个操作数两次,存放结果一次。
      程序大多数都是按顺序执行,程序计数器PC能存放当前欲执行的指令的地址,又有计数功能,因此能自动形成下一条指令此时,A4便可以省去,形成三地址格式。

    • 三地址码
      在这里插入图片描述
      完成操作(A1)OP(A2) ->A3.跟刚刚说的四地址码一样,需要经过四次访存,但是其寻址地址范围有所增加,为2^8 = 256位。
      但是在机器的运行过程中,没有必要把每次的运算结果都存入主存中,中间的结果可以暂存于A1,A3的字段中,或者是CPU的寄存器中(如ACC),这样一来,又可以省去一个地址字段A3,从而得出二地址指令。

    • 二地址指令
      在这里插入图片描述
      可完成操作(A1)OP(A2)->A1.即A1字段中即代表的是源操作数地址,又代表存放本次运算结果的地址。当然也可以这样(A1)OP(A2)->A2.跟上面的原理完全一样。只不过用的是A2字段存放罢了。
      但是,如果用A1或者A2来存放结果,则需要访问4次内存。若采用的是ACC存放结果,则需要3次访存(因为ACC在CPU中,不在内存中)。其寻址能力为2^12 = 4K.
      再进一步,如果将操作数(其中一个)隐含在ACC中,则指令只需要给出一个地址码,便可以构成一地址码指令。
      二地址码根据操作数的物理位置,分为:
      SS(存储器 - 存储器类型)
      RS(寄存器 - 存储器类型)
      RR(寄存器 - 寄存器类型)
      存取速度自上往下越来越快。

    • 一地址指令
      在这里插入图片描述
      完成操作:(ACC)OP(A1) ->ACC.也就是ACC存放的参与运算的数,又存放中间的结果。这样完成该指令只需要2次访存。寻址范围为2^24 = 16M.
      类似的可以有类似于(PC)+ 1 ->PC等等
      在指令系统中,还有一种指令,它不需要操作数,或者所需要的操作数是隐含指定的。这就是所谓的零地址指令。

    • 零地址指令
      这类操作一般用来进行停机,空操作,清除操作。对ACC内容操作,对堆,栈内容进行操作。隐含的操作数一般来自于栈顶,和次栈顶元素。

2018年最后一篇文章,祝大家新年快乐。明年这个系列会一直写下去的。谢谢来看我博文的朋友们。

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值