四、指令系统
程序由一系列的指令组成的,指令是要计算机执行某种操作的命令
从计算机组成的层次结构来说分为微指令、机器指令和宏指令
- 微指令:微程序级的命令,它属于硬件
- 宏指令:由若干条机器指令组成的软件指令,它属于软件
- 机器指令(指令):介于微指令与宏指令之间,每条指令可完成一个独立的算数运算或逻辑运算
- 指令系统:计算机中所有机器指令的集合
指令中一般需要包含以下信息:
1.操作的类型:操作的内容和功能,如加法操作、访问存储器操作
2.操作数的存储位置:参加运算的数据存储的地方,操作数存储的位置可以是寄存器、存储单元、直接安排在指令
3.操作结果的存储位置:将运算结果存储在什么地方
4.下一条指令的地址信息:到哪里去取下一条指令
指令格式
指令:操作码字段 地址码字段
指令字(简称指令):表示一条指令的机器字
指令格式:是指令字用二进制代码表示的结构格式,由操作码字段和地址码字段组成
操作码字段:表征指令的操作特性与功能
地址码字段:指定参与操作的操作数的地址码
指令系统的每一条指令都有一个操作码,它表示该指令应进行什么性质的操作
不同的指令用操作码字段的不同编码来表示,每一种编码代表一种指令
操作码 可以分为 和可变长度的代码
固定长度的代码:所有指令操作码长度相同
优点:编码方法简单,便于指令的译码
缺点:不便于指令系统中增加新的指令(扩展不方便)
可变长度的代码:指令操作码长度不同
优点:便于指令系统中增加新的指令(扩展方便)。能够缩短指令操作码的平均长度。采用方法为常用的指令采用短的操作码,不常用的指令采用长的操作码
缺点:编码方法复杂,使指令的译码变得复杂
零地址指令:只有操作码,没有地址码(空操作NOP,停止HLT等)
一地址指令:指令编码中有一个地址码。指出了参加操作的一个操作数的存储位置,如果还有另一个操作数则隐含在累加器中
二地址指令:指令编码中有两个地址码。指出了参加操作的两个操作数的存储位置,结果存储在其中一个地址中
从操作数的物理位置来说,分为寄存器-寄存器(RR)型指令、寄存器-存储器(RS)型指令、存储器-存储器(SS)型指令
三地址指令:指令编码中有三个地址码。指出了参加操作的两个操作数的存储位置和一个结果的地址
指令字
指令字长度:一个指令字中包含二进制代码的位数。长度应该与计算机的数据字长相匹配,以简化指令访存的操作。一般指令字长为计算机字长的整数倍
机器字长:计算机能直接处理的二进制数据的位数,它决定了计算机的运算精度。指令字长等于机器字长指令称为单位字长指令
指令字长等于两个机器字长指令称为双字长指令,三字长以上指令较少使用
使用多字长指令,目的在于提供足够的地址位来解决访问内存任何单元的寻址问题
缺点:是必须两次或多次访问内存以取出一整条指令,降低了CPU的运算速度,又占用了更多的存储空间
操作码的设计,应当与地址码的设计相匹配,以形成高效合理的指令编码
如指令长度固定的情况下,地址码数量较多的指令中可以安排较短的操作码,地址码数量较少的指令中可以安排较长的操作码
指令和数据的寻址方式
指令寻址:确定下一条欲执行指令的指令地址,比较简单(顺序寻址、跳跃寻址)
数据寻址:确定本条指令的操作数地址,比较复杂
隐含寻址:指令中少了一个地址字段,可缩短指令字长
立即寻址:形式地址A就是操作数本身,指令执行阶段不访存
直接寻址:形式地址就是操作数有效地址
间接寻址:有效地址由形式地址间接提供,执行指令截断2次访存,可扩大寻址范围
寄存器寻址:有效地址即为寄存器的编号,执行阶段不访存,只访问寄存器,执行速度快,操作数在寄存器
寄存器简介寻址:有效地址在寄存器中,操作数在内存中,执行阶段访存
偏移寻址:一种强有力的寻址方式
有效地址计算公式为E(A)=A+®
形式地址A是显示的
另一个地址字符按隐含在某个专用寄存器R中
常用的三种偏移寻址是相对寻址、基址寻址、变址寻址
相对寻址
EA=A+(PC)
A是相对于当前指令的位移量(可正可负,补码)
基址寻址
EA=A+(BR)
BR为基址寄存器
可扩大寻址范围
变址寻址
EA=A+(IX)
IX为变址寄存器(专用)
通用寄存器也可以作为变址寄存器
可扩大寻址范围
在程序的执行过程中IX内容可变,形式地址A不变
便于处理数组问题
段寻址方式
CISC和RISC
计算机指令系统的类型可以分为复杂指令系统计算机(CISC)和精简指令系统计算机(RISC)