计算机组成原理学习笔记——机器指令的基本结构

〇、何为指令?

  • 指令,或者说机器指令,是指示计算机执行某种操作的命令,是计算机运行的最小功能单位
    一台计算机的所有指令集合构成该机的指令系统,也称指令集。指令系统是计算机的主要属性,位于硬件和软件的交界面上。

一、基本格式

  • 机器指令就是机器语言,一组有意义的二进制代码,通常由操作码字段和地址码字段组成。

  • 操作码,用于指出该指令要执行什么操作和具有何种功能,是识别指令、了解指令以及区分操作数地址内容的组成和使用方法等的关键信息。

  • 地址码给出被操作的信息,指令或数据的地址,包括参加运算的一个或多个操作数所在的地址、运算结果的保存地址、程序的转移地址、被调用的子程序的入口地址等。

  • 指令长度与机器字长没有固定关系,可以等于、大于或小于机器字长,通常,指令字长等于机器字长的称为单字长指令,指令长度等于半个机器字长的称为半字长指令,指令长度等于两个机器字长称为双字长指令
    在一个指令系统中,若所有指令的长度都相等则称为定长指令字结构,优点是执行速度快,控制简单。若各种指令的长度随指令功能而异,则称为变长指令字结构

  • 根据指令操作数地址码的数目的不同分为零地址指令、一地址指令、二地址指令、三地址指令和四地址指令

1、零地址指令

  • 只有操作码,而没有给出地址码。其结构如下:
    在这里插入图片描述
  • 这种指令有两种可能情况:
  • 1)不需要操作数的指令,如空栈指令、停机指令、关中断指令等。
  • 2)零地址的运算类指令仅用在堆栈计算机中。通常参与运算的两个操作数隐含地从栈顶和次栈顶弹出,送到运算器进行运算,运算结构再隐含压入堆栈。

2、一地址指令

  • 只有一个地址码,结构如下:
    在这里插入图片描述
  • 这种指令也有两种常见形态,根据操作码含义确定究竟是哪一种。
  • 1)只有目的操作数地单操作数指令,按 A1 地址读取操作数,进行 OP 操作后,结果存回原地址。
    指令含义:OP(A1)→A1,如加1、求反、求补等。
  • 2)隐含约定目的地址的双操作数指令,按指令地址 A1 可读取源操作数,指令可隐含约定另一个操作数由 ACC(累加器)提供,运算结果也存放在 ACC 中。
  • 指令含义:(ACC)OP(A1)→ACC
  • 若指令字长为 32 位,操作码占 8 位,1 个地址码字段占 24 位,则指令操作数地直接寻址范围 2^24 = 16,777,216 = 16M.

3、二地址指令

  • 二地址指令地结构如下:
    在这里插入图片描述
  • 指令含义:(A1)OP(A1)→A1
  • 常用地算术和逻辑运算指令,往往要求两个操作数,需分别给出目的操作数和源操作数地地址,其中目的操作数地址还用于保存本次地运算结果。
  • 若指令字长 32 位,操作码占 8 位,两个地址码字段占 12 位,则指令操作数地直接寻址范围为 2^12 = 4,096 = 4K.

4、三地址指令

  • 结构如下:
    在这里插入图片描述
  • 指令含义:(A1)OP(A2)→A3
  • 若指令字长为 32 位,操作码 8 位,3 个地址码各占 8 位,则指令操作数地直接寻址范围 2^8 = 256 。若地址字段均为主存地址,则完成一条三地址的指令需要 4 次访存:取指一次,取两个操作数两次,保存结果 1 次。

5、四地址指令

  • 指令结构如下:
    在这里插入图片描述
  • 指令含义:(A1)OP(A2)→A3, A4=下一条将要执行指令的地址
  • 若指令字长为 32 位,操作码 8 位, 4 个地址码字段各占 6 位,则指令操作数的直接寻址范围为 2^6 = 64.

二、定长操作码指令格式

  • 定长操作码指令再指令字的最高位部分分配固定的若干位表示操作码。一般 n 位操作码字段的指令系统最大能够表示2^n 条指令。
  • 定长操作码对于简化计算机硬件设计,提高指令译码和识别速度有利。当计算机字长位 32 位或更长时,这是常规做法。

三、变长操作码指令系统

  • 为了再指令长度有限的前提下仍保持比较丰富的指令种类,可采取可变长操作码,缺点就是增加指令译码和分析的难度,使控制器的设计复杂化。

  • 最常见的变长操作码方法是扩展操作码,使操作码长度随地址码的减少而增加,不同地址数的指令可具有不同长度的操作码。
    在这里插入图片描述
    在这里插入图片描述

  • 此外还有其他扩展方法,比如,形成 15 条三地址指令、12 条二地址指令、63 条一地址指令和 16 条零地址指令,共 106 条指令。

  • 设计扩展操作码时,注意如下:

  • 1)不允许短码是长码的前缀,即短操作码不能与长操作码的前面部分的代码相同

  • 2)各指令的操作码一定不能重复

  • 通常情况,对使用频率较高的指令分配较短的操作码,对使用频率较低的指令分配较长的操作码,从而尽可能减少指令译码和分析时间。

上一篇
下一篇

发布了184 篇原创文章 · 获赞 24 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_42896653/article/details/104971409