r## 4.1指令系统的发展与性能要求
4.1.1指令系统的发展
计算机的程序是由一系列的机器指令组成的。指令就是计算机执行某种操作的命令。从计算机组成的层次结构来说,计算机指令分为:微指令、机器指令和宏指令。
微指令:微程序级命令,属于硬件
宏指令:由若干机器指令组成的软件指令,属于软件
机器指令:介于两者之间,简称指令,每一条指令可完成一个独立的算术运算或逻辑运算操作。
指令系统(指令集):一台计算机中所有机器指令的集合。表现计算机性能,格式与功能不仅影响机器的硬件结构,还有系统软件;指令是一台计算机的硬件与低层软件的接口
系列计算机:基本指令系统相同、基本体系结构相同的一列计算机。时间和器件不同,结构性能上有差距。
CISC:复杂指令系统计算机,研制周期长,大量指令利用率低
RISC:精简指令系统计算机,
4.1.2指令系统的性能要求
完备性:用汇编语言编写程序是,指令系统提供的指令足够使用,不需要用软件实现。
有效性:用指令系统编写的程序能高效率的运行,一般说功能强、指令系统完善其有效性就会更好
规整性:对称性、匀齐性、指令格式和数据格式的一致性。
对称性:指令系统中所有的寄存器和存储器单元都可同等对待,
所有的指令都可使用各种寻址方式
匀齐性:一种操作性质的指令可以支持多种数据类型,如算术运算:
支持字节、字、十进制、单双浮点。
指令格式和数据格式的一致性:指令长度和数据长度有一定关系,
一方便处理和存取。如:指令长度和数据长度通常是字节长度的整数倍。
兼容性:计算机间基本结构和基本指令系统相同,只能“向上兼容”
4.1.3 低级语言与硬件结构的关系
汇编语言依赖于计算机的硬件结构和指令系统。
高级语言不依赖

4.2指令格式
指令字:机器指令使用机器字来表示的,一条指令的机器字就是指令字,称指令
格式:
操作码字段OP | 地址码字段A
4.2.1操作码
指令的操作码OP表示该指令应进行什么性质的操作,指令不同操作码字段的编码不同,一种编码代表一种指令;001 加法 110 取整
指令系统的规模决定了操作码字段的位数: 2的n次方个指令表示需要n个操作码
4.2.2地址码
根据一条指令中操作数地址个数不同,可将其分为几地址指令。
1) 零地址指令
2)一地址指令:只有一个地址码,指定一个操作数,另一个操作数地址是隐含的。
AC<—(AC)OP(A)
op表示操作性质,如加、减、乘除
(AC)表示累加寄存器AC中的数
(A)表示内存中地址为A的存储单元中的数,或运算器中地址为A的通用寄存器中的数;
<—:表示把操作结果传送到指定的地方。
注意:地址码字段A指明的是操作数的地址,而不是操作数本身
3)二地址指令(双操作数指令):地址段A1和A2,分别指明参与操作的两个数在内存中或运算器中通用寄存器的地址,A1兼作存放操作结果的地址。数学含义:
A1<-----(A1)op(A2)
操作数的物理位置有分为三种类型:
存储器存储器型指令(SS):访问内存的指令格式,从内存一个单元取出放入另内存一个单元
寄存器寄存器(RR):机器执行指令时,需要多个通用寄存器或个别专用
从一个到另一个,执行速度快,不需要访问内存
寄存器-存储器(RS):访问内存单元和寄存器
4)三地址指令 操作数地址:A1,A2,A3 数学含义:
A1 <—(A1)OP(A2)
A1为被操作数地址,源操作数地址
A2操作数地址,终点操作数地址
A3存放操作结果的地址。
这三种通常指定为运算器中通用寄存器的地址,目的:加快指令执行速度。
4.2.3指令字长度
指令字长度:一个指令中包含二进制代码的位数
机器字长:计算机能直接处理的二进制数据的位数,决定了计算机的运算精度。与主存单元的位数一致。
单字长指令:指令字长度等于机器字长度的指令
半字长指令:
双字长指令:
4.2.4指令助记符
4.2.5 指令格式举例
1.八位微型计算机的指令格式
单字长指令: 操作码
双字长指令: 操作码 操作数地址
三字长指令: 操作码 操作数地址1 操作数地址2
双或三字长指令包含操作码和地址码,由于内存按字节编址,所以但字长指令每执行一条指令后,指令地址+1,双或三字指令每执行一条指令时,必须从内存连续读2或3个字节代码,所以指令地址要+2或+3,多字节指令不利于提高机器速度。
2.MIPS R4000指令格式
字长32位,字节寻址。 指令数量少,通用寄存器32个,算术指令格式:
OP rs rt rd shamt funct R型
OP字段—操作码,指定一条指令的基本操作 6位
rs字段–指定第一个源操作数寄存器,最多有32个寄存器 5位
rt字段----指定第2个源操作数寄存器,最多有32个寄存器 5位
rd字段—指定存放操作结果的目的数寄存器,最多32 5位
shamt字段------ 移位值,用于移位指令 5位
funct字段----函数码,指定R型指令的特定操作
在MIPS中所有算术运算,数据必须放在通用寄存器中,
访问存储器(取数或存数)需要使用数据传送指令。此时的指令格式称为I型(立即数)指令,格式:
OP rs rt 常数或地址(address) I型
6为 5位 5位 16位
16位字段address提供取字指令(IW),存字指令(SW)访问存储器的基值地址码(位移量)
保持指令格式基本一致可降低硬件复杂程度,例如:R与I前3个字段长度相等,名称一样;I型格式第四个字段与R型后三个字段的长度相等。
3.ARM的指令格式
ARM是字长32位的嵌入式处理机,
4.Pentium指令格式
4.3 操作数类型
4.4 指令和数据的寻址方式
存储器既可以用来存放数据、又可以用来存放指令,当某个操作数或某条指令存放在某个存储单元时,存储单元的编号,就是该操作数或指令在存储器中的地址。
在存储器中,操作数或指令字写入或独处方式:地址指定方式、相联存储方式、堆栈存取方式。
计算机在内存中采用地址指定方式。此时形成操作数或指令地址的方式,称为寻址方式。 寻址方式分为:指令寻址方式和数据寻址方式,
冯诺依曼结构计算机中,内存中指令的寻址和数据的寻址交替进行
哈佛型计算机这指令和数据寻址是分开的。
- 这两者那种好呢?都是啥意思呢?
4.4.1指令的寻址方式
1.顺序寻址方式(PC实现)
由于指令地址在内存中按顺序安排,从存储器取出一条指令,执行,接着重复这种顺序执行过程。使用程序计数器(PC)来计数指令的顺序号,该顺序号就是指令在内存中的地址。
2.跳跃寻址方式(由程序来实现)
程序计数器:存放下一条要存储指令的地址,
本条指令给出下条指令的地址。
4.4.2操作数基本寻址方式
定义:形成操作数的有效存储地址的方法。
1.隐含寻址
在指令中隐含着操作数的地址
2.立即寻址
指令的地址字段指出的不是操作数的地址,而是操作数本身
3.直接寻址
操作数的地址直接给出而不需要经过某种变换。
特点:在指令格式的地址字段中直接指出操作数在内存的地址A。
4.间接寻址
相对于直接寻址而言的,指令地址字段中的形式地址A不是操作数D的真正地址,而是操作数地址的知识器
5.寄存器寻址
当操作数不在内存中,而是在CPU的通用寄存器中时,可采用寄存器寻址方式。
6.寄存器间接寻址
指令格式中的寄存器内容不是操作数,而是操作数的地址,该地址指明的操作数在内存中。
7.偏移寻址
直接寻址和寄存器间接寻址方式的结合
相对寻址:隐含引用的专用寄存器是程序计数器(PC),即EA=A+(PC),它是当前PC的内容加上指令地址字段中A的值。
基址寻址:被引用的专用寄存器含有一个存储器地址,地址字段含有一个相对于该地址的偏移量
变址寻址:地址域引用一个主存地址,被引用的专用寄存器含有对那个地址的正偏移量(为了重复操作的完成提供一种高效机制)
8.段寻址