指令编码
指令格式
指令字长取决于操作码的长度,操作数地址的长度以及操作数地址的个数 。
OP:定长操作码当IR = 32b,OP = 8b
AD:地址码应该指出操作数的地址、运算结果需存放的地址、下一条指令的地址。可以使主存地址、寄存器地址、甚至可以使IO设备地址。
- 零地址:控制令、停机、关中断、堆栈计算机中的零地址运算类指令
定长指令字机器:机器中的所有指令都一样字长,规整型指令。大多是32b指令字。
不定常指令字机器:指令有长短,但每条指令的长度一般都是8的倍数。
定长操作码指令格式:指令字的最高位部分分配固定的若干位为操作码。
不定长操作码指令格式:不允许较短的操作码是较长的操作码的前缀赫夫曼树;通常情况下,对使用频率较高的指令,分配较短的操作码
指令寻址方式

跳跃寻址:立即寻址,相对寻址,间接寻址
数据寻址方式

立即数:指令直接给出操作数,用补码表示。寻址方式通常用#表示,其他的寻址方式不用特殊符号表示,立即数,通常用于对某寄存器或内存单元赋初值
隐含寻址:最典型的例子是一地址格式的加法指令,ADD仅给出一个操作码,另一个在ACC中,缩短指令字长
IO指令
是机器指令的一类,其指令格式和其他指令既有相似又有不同。必须反映出多台IO设备之间的选择。操作码字段可以作为IO指令和其他指令的判别代码,命令码体现IO设备的具体操作,设备码是多台IO设备的选择码(地址码)。
中断隐指令
中断隐指令不属于系统指令,它是CPU在中断周期内由硬件自动完成的一条指令。
开中断指令将
EINT置1关中断指令将
EINT置0。
指令集
指令集架构是对 CPU 硬件的抽象,使用这个抽象,CPU 看起来好像一次只执行机器代码程序的一条指令,实际上底层硬件并行地执行多条指令。
虚拟机是对整个计算机系统的抽象,包括操作系统、处理器和程序。

CISC 复杂指令集,RISC 是精简指令集。
CISC(Complex Instruction Set Computer):复杂指令系统计算机
- 指令系统复杂庞大,指令长度不固定,指令格式多,寻址方式多。
- 可以访存的指令不受限制,各种指令使用的相差频度大,执行时间相差大。
- 采用微程序控制,难以用优化编译生成高效的目标代码程序。
RISC(Reduced Instruction Set Computer):精简指令系统计算机
- 选取使用频率最高的一些简单指令,复杂指令由简单指令构成
- 指令长度固定,指令格式种类少,寻址方式种类少
- 只有取数存数指令访存
- CPU 中通用寄存器数量多
- 采用流水线
- 硬布线 特别注意编译优化
CISC:除了寄存器少之外,其余特点均与多、大、不固定有关
RISC:一定采用流水线
| CISC(复杂指令集计算机) | RISC(简单指令集计算机) | |
|---|---|---|
| 指令系统指令数寻址方式可访存指令各种指令使用频率各种指令执行时间 | 复杂,庞大一般大于200不固定不加限制相差很大相差很大 | 简单,精简一般小于100固定32位只有LOAD/STORE指令相差不大绝大多数在一个机器周期完成 |
| 优化编译实现 | 很难 | 较容易 |
| 程序源代码长度 | 较短 | 较长 |
| 控制逻辑实现方式 | 绝大多数为微程序控制 | 绝大多数为硬连线控制,应用流水线技术 |
| RISC机的主要优点可归纳如下(1)充分利用VLSI芯片的面积(2)提高了计算机运行速度(3)便于设计,降低成本,提高可靠性(4)有效支持高级语言程序 |
//非访存
CLA 0->ACC
COM !ACC->ACC
SHR ACC>>1
CSL R(ACC)->L(ACC),ACC0->ACCn
STP 0->G
//访存
ADD Ad(IR)->MAR,1->R;M(MAR)->MDR;(ACC)+(MDR)->ACC
STA Ad(IR)->MAR,1->W;(ACC)->MDR;(MDR)->M(MAR)
LDA Ad(IR)->MAR,1->R;M(MAR)->MDR;(MDR)->ACC
// 转移
JMP Ad(IR)->PC
BAN A0*Ad(IR)+!A0*(PC)->PC