计算机底层逻辑学习笔记8-指令信息表示——指令格式

299 阅读3分钟

一台计算机能够直接识别并执行的程序只能是机器语言程序。因此,任何问题无论使用哪一种计算机语言来编程实现,都必须通过翻译程序转换成对应的机器语言程序后才能执行。

机器语言程序是由机器指令序列组成的,它们产生各种控制信息的基础。

一台计算机的所有指令的集合构成该机的指令系统。指令系统即是软件设计者提供的最低层次的程序设计语言,也是硬件设计者的最基础的设计依据。因此,指令系统是软件和硬件的接口。

一、指令中的基本信息

计算机是通过执行指令来处理各种数据。为了指出所执行的操作、操作数的来源、操作数的结果去向,以及下一条指令从哪里取,一条指令一般应包含以下信息:

  1. 操作码:用来表示指令所要完成的操作,一台计算机可能有几十至几百条指令,每一条指令都有一个对应的操作码,CPU通过识别操作码来控制完成不同的操作,而操作码也是区别不同指令的重要依据。

  2. 操作数的地址:给出操作数存放处的地址,如主存单元地址或寄存器地址。CPU通过该地址可以获得所需的操作数。

  3. 操作结果的地址:把对操作数进行处理所产生的结果存放在该地址中,以便再次使用。

  4. 下一条指令地址:由于存储在主存储器中的程序是按指令执行顺序连续存放的,并且在大多情况下程序是顺序执行的,因此可以设计一共程序计数器PC专门存放指令地址,每取出一条指令后,PC自动增值指出下一条指令地址,这样就不需要指令中直接给出下一条指令的地址。当需要改变程序执行顺序时,可由转移类指令实现。

二、地址码结构

主要问题是一条指令中直接或间接指明几个地址:每个地址采用什么方式给出。

OP表示操作码;A1、A2、A3分别表示操作数1的地址、操作数2的地址、操作数3的地址,A1、A2和A3可以是主存单元地址或寄存器地址。

1. 三地址指令

OPA1A2A3
操作码操作数1操作数2操作数3

2. 二地址指令

OPA1A2
操作码操作数1操作数2

3. 一地址指令

OPA1
操作码操作数1

4. 零地址指令

OP
操作码

三、操作码结构

1. 固定长度操作码

操作码的长度固定,且集中放在指令字的一个字段中,指令的其余部分全部用于地址码。

2. 可变长度操作码

如果指令长度一定,则地址码与操作码的长度是相互制约的,为了解决这一矛盾,可采用扩展操作码的办法,即操作码和地址码位数补固定,操作码位数允许有几种不同的选择。

使用操作码拓展技术的一个重要原则是,使用频率(指在程序中出现的概率)高的指令应分配短的操作码;使用频率低的指令则分配较长的操作码。这样不仅有效的减少了操作码在程序中的总位数,节省了存储空间,而且还缩短了常用指令的译码时间。

3. 复合型操作码

在有的计算机中,因为指令字长有限,致使指令条数有限。为了使一条指令能表示更多的操作信息,采用复合型操作码,将操作码分为几个部分,它们组合使操作含义更丰富。