本文共 1858 字,大约阅读时间需要 6 分钟。
机器指令
,是指示计算机执行某种操作的命令,是计算机运行的最小功能单位
。 一台计算机的所有指令集合构成该机的指令系统,也称指令集
。指令系统是计算机的主要属性,位于硬件和软件的交界面上。机器指令就是机器语言,一组有意义的二进制代码
,通常由操作码字段和地址码字段
组成。
操作码,用于指出该指令要执行什么操作和具有何种功能
,是识别指令、了解指令以及区分操作数地址内容的组成和使用方法等的关键信息。
地址码给出被操作的信息
,指令或数据的地址,包括参加运算的一个或多个操作数所在的地址、运算结果的保存地址、程序的转移地址、被调用的子程序的入口地址等。
指令长度与机器字长没有固定关系,可以等于、大于或小于机器字长,通常,指令字长等于机器字长的称为单字长指令
,指令长度等于半个机器字长的称为半字长指令
,指令长度等于两个机器字长称为双字长指令
。
定长指令字结构
,优点是执行速度快,控制简单。若各种指令的长度随指令功能而异,则称为变长指令字结构
。 根据指令操作数地址码的数目的不同分为零地址指令、一地址指令、二地址指令、三地址指令和四地址指令
。
操作码
,而没有给出地址码。其结构如下: 不需要
操作数的指令,如空栈指令、停机指令、关中断指令等。堆栈计算机
中。通常参与运算的两个操作数隐含地从栈顶和次栈顶弹出,送到运算器进行运算,运算结构再隐含压入堆栈。OP(A1)→A1
,如加1、求反、求补等。隐含约定目的地址
的双操作数指令,按指令地址 A1 可读取源操作数,指令可隐含约定另一个操作数由 ACC(累加器)提供
,运算结果也存放在 ACC 中。(ACC)OP(A1)→ACC
直接寻址范围 2^24 = 16,777,216 = 16M
.(A1)OP(A1)→A1
直接寻址范围为 2^12 = 4,096 = 4K.
(A1)OP(A2)→A3
直接寻址范围 2^8 = 256
。若地址字段均为主存地址,则完成一条三地址的指令需要 4 次访存
:取指一次,取两个操作数两次,保存结果 1 次。(A1)OP(A2)→A3, A4=下一条将要执行指令的地址
。直接寻址范围为 2^6 = 64
.高位部分分配固定的若干位
表示操作码。一般 n 位操作码字段的指令系统最大能够表示2^n
条指令。提高指令译码和识别速度
有利。当计算机字长位 32 位或更长时,这是常规做法。为了再指令长度有限的前提下仍保持比较丰富的指令种类,可采取可变长操作码,缺点就是增加指令译码和分析的难度
,使控制器的设计复杂化。
最常见的变长操作码方法是扩展操作码,使操作码长度随地址码的减少而增加,不同地址数的指令可具有不同长度的操作码。
此外还有其他扩展方法,比如,形成 15 条三地址指令、12 条二地址指令、63 条一地址指令和 16 条零地址指令,共 106 条指令。
设计扩展操作码时,注意如下:
1)不允许短码是长码的前缀,即短操作码不能与长操作码的前面部分的代码相同
。
2)各指令的操作码一定不能重复
。
通常情况,对使用频率较高的指令分配较短的操作码,对使用频率较低
的指令分配较长的操作码
,从而尽可能减少指令译码和分析时间。
转载地址:http://zmqgn.baihongyu.com/