基本概念
指令 (Instruction)要计算机执行某种操作的命令指令系统 (Instruction Set)一台计算机中所有机器指令的集合系列计算机 (Series Computer)基本指令系统相同基本体系结构相同CISC(Complex Instruction Set Computer)RISC(Reduced Instruction Set Computer)对指令系统的要求
完备性 : 完备性要求指令系统丰富、功能齐全、使用方便。有效性 : 有效性是指利用该指令系统所编写的程序能够高效率地运行。高效率主要表现在程序占据存储空间小、执行速度快。规整性 : 规整性包括指令系统的对称性、匀齐性、指令格式和数据格式的一致性。兼容性 : 系列机各机种之间具有相同的基本结构和共同的基本指令集,因而指令系统是兼容的,即各机种上基本软件可以通用指令格式
操作码操作数的地址(地址码)操作结果的存储地址下一条指令的地址由程序计数器(PC)给出→顺序指令地址由指令给出→转移目标指令地址操作码指令的操作码OP 表示该指令应进行什么性质的操作,如进行加法、减法、乘法、除法、取数、存数等等。不同的指令用操作码字段的不同编码来表示,每一种编码代表一种指令。组成操作码字段的位数一般取决于计算机指令系统的规模。较大的指令系统就需要更多的位数来表示每条特定的指令。地址码根据一条指令中有几个操作数地址,可将该指令称为几操作数指令或几地址指令。三地址指令
A1: 第一个源操作数的存储地址A2: 第二个源操作数的存储地址A3: 操作结果的存储地址二地址指令
A1: 第一个源操作数和操作结果的存储地址A2: 第二个源操作数的存储地址单地址指令
A: 既是操作数的地址 , 又是操作结果的存储地址如 +1/-1 指令
零地址指令
(1) 无需任何操作数 : 如 空操作指令(2) 所需操作数是默认的 : 如 堆栈型计算机的运算类指令多地址指令批数据处理指令 : 如 字符串处理指令 , 矩阵运算指令CDC STAR-100: 7 地址段结论(1) 零地址 / 一地址 / 二地址指令短 , 指令速度快 , 实现简单 , 小型机 / 微型机采用(2) 三地址 / 多地址指令功能强 , 有利于程序设计 , 大型机采用根据操作数的物理位置分为:SS 存储器 - 存储器类型RS 寄存器 - 存储器类型RR 寄存器-寄存器类型
举例:
8 位微型计算机的指令格式如 8088 ,字长 8 位,指令结构可变包括单字长、双字长和三字长指令操作码长度固定PDP/11 系列机的指令格式字长 16 位单字长指令操作码字段不固定
扩展操作码技术
![]()
奔腾指令格式
指令长度可变,最短 1 个字节,最长 12 个字节,还可以带前缀( 0~4 )。典型的 CISC 指令系统![]()
OP : 包含操作数长度Mod/RMMod+R /M : 8 个寄存器 +24 种变址方式Reg/op : 寄存器号 , 附加操作码R/M : 寄存器号 , Mod+R /MSS : 变址寄存器的放大因子Index : 变址寄存器Base : 基寄存器Imm : 立即数 (8, 16, 32 位 )Disp : 位移量 (8, 16, 32 位 )指令长度
寻址方式
寻址方式 指令中操作数地址的表示形式。基本寻址方式立即数寻址地址码部分就是指令的操作数
取操作数不必再次访问存储器操作数不能修改 ( 为常数 )初始化直接寻址地址码直接给出操作数的地址。A 的长度决定了指令的寻址范围EA=A
间接寻址指令的地址码部分给出的地址 A 不是操作数的地址,而是存放操作数地址的主存单元的地址 .EA=(A)
寄存器寻址在指令的地址码部分给出 CPU 内某一通用寄存器的编号,指令的操作数存放在相应的寄存器中可缩短指令长度EA=Ri
寄存器间接寻址将操作数放在主存储器中,而操作数的地址放在某一通用寄存器中,然后在指令的地址码部分给出该通用寄存器的编号EA=(Ri)
相对寻址由程序计数器 PC 提供基准地址,而指令的地址码部分给出相对的位移量 D ,两者相加后作为操作数的有效地址EA = (PC) + D 。
基址寻址指令的地址码部分给出偏移量 D ,而基准地址放在基址寄存器 R b 中,最后操作数的有效地址仍然是由基地址 A 与偏移量 D 相加而成EA = (R b ) + D 。
变址寻址将指令的地址码部分给出的基准地址 A 与 CPU 内某特定的变址寄存器 Rx 中的内容相加,以形成操作数的有效地址 方便程序浮动EA = A + (Rx) 。![]()
设数据块首地址为 D,求 N 个数的平均值
![]()
堆栈寻址
寄存器堆栈和存储器堆栈先进后出栈顶指示寄存器例:设 A 为通用寄存器, SP 为堆栈指示器, M SP 为 SP 指示器的栈顶单元如果入栈操作的动作是:( A )→ M SP ,( SP ) -1→SP那么出栈操作的动作应为:(SP)+1→SP,(MSP)→A
Pentium寻址方式
某16位机器所使用的指令格式和寻址方式如下所示,该机有两个20位基址寄存器,四个16位变址寄存器,十六个16位通用寄存器。指令汇编格式中的S(源),D(目标)都是通用寄存器,M是主存中的一个单元。三种指令的操作码分别是MOV(OP)=(A)H,STO(OP)=(1B)H,LAD(OP)=(3C)H。MOV是传送指令,STO为存数指令,LAD为取数指令。
![]()
![]()
指令分类
数据传送类指令一般传送指令: MOV AX , BX数据交换指令: XCHG运算类指令算术运算指令: 加、减、乘、除以及加 1 、减 1 、比较逻辑运算指令:移位指令程序控制类指令程序控制类指令用于控制程序的执行方向,并使程序具有测试、分析与判断的能力。无条件转移,条件转移,调用与返回,陷阱和陷阱指令输入和输出指令、字符串处理指令、特权指令、其他指令RISC指令系统的发展
IBM 公司研究员 John Cocke 在 1974 年发起这样的概念,他证明了用 20% 的指令即可完成 80% 的工作,这直接导致了 IBM RISC System/6000 的诞生。 Sun 公司也把这样的概念引进到其 SPARC 处理器中。而 HP 在其 NonStop 、 AlphaServer 以及 HP9000 系列服务器中采用了三种不同的 RISC 技术,只是 HP 已经在有意地放弃这一技术。在目前这场 RISC 运动中,起核心作用的还要数 IBM ,其 Power5 芯片已经在市场上获得盛誉,在主要厂商中,目前只有 Sun 和 IBM 提供 RISC 芯片RISC指令的特点
精简指令。选取使用频率高的一些简单指令指令长度固定指令格式种类少寻址方式种类少只有 load/store 指令访问存储器,其余指令都是 RR 型指令