指令系统
-
基本概念
-
微指令,微程序级的命令,属于硬件
-
宏指令,由若干条机器指令组成的软件指令,属于软件
-
机器指令,介于两者之间,简称指令,每一条指令可完成一个独立的算术运算或逻辑运算操作
-
指令系统,指令集:一台计算机所有机器指令的集合
-
系列计算机:基本指令系统相同,基本体系结构相同的一系列计算机
-
复杂指令系统计算机:CISC,Complex Instruction Set Computer
-
精简指令系统计算机:RISC,Reduced Instruction Set Computer
-
-
超大规模集成电路VLSI: Very Large Scaled Integration
-
-
性能要求:完备性,有效性,规整性,兼容性
-
低级语言和硬件结构的关系
-
汇编语言依赖于计算机的硬件结构和指令系统
-
一些高级语言如C,提供了与汇编语言之间的调用接口,用汇编语言编写的程序,可作为高级语言的一个外部过程或函数利用堆栈来传递参数或参数地址,涉及到硬件资源时,可用汇编程序实现
-
-
指令系统体系结构ISA(Instruction Set Architecture):寄存器组织,存储器组织和寻址方式,I/O系统结构,数据类型及其表示,指令系统,中断机制,机器工作状态的定义及切换,保护机制等
指令格式
-
指令字:表示一条指令的机器字,简称指令,由操作码字段OP和地址码字段A组成
-
操作码:表示指令应进行什么性质的操作,每一种编码表示一种指令
-
地址码:一条指令含有的操作数数目不等
-
零地址指令,如停机指令
-
一地址指令,指定一个操作数,另一个操作数隐含
-
二地址指令(双操作数指令):A1兼作出存放操作结果的地址
-
三地址指令,三个操作数
-
A1为被操作数地址(源操作数地址)
-
A2为操作数地址,也是终点操作数地址
-
A3为存放操作结果的地址
-
-
-
从操作数的物理位置分类
-
8086指令系统不允许两个操作数都是存储单元
-
S:存储器,R:寄存器,SS型,RR型,RS型
-
-
指令字长度:一个指令字中包含二进制代码的位数
-
单字长指令:指令字长度等于机器字长度的指令
-
半字长指令、双字长指令
-
多字长指令目的:提供足够的地址位来访问内存任何单元的寻址,缺点是必须两次或三次访问内存以取出一整条指令,降低了CPU运算速度,占用了更多存储空间
-
-
机器字长:计算机能直接处理的二进制数据的位数,应当与主存单元的位数一致
-
-
指令助记符:ADD, SUB, MOV, JMP, JSR, STO, LAD
-
举例
-
早期八位微型计算机指令格式(机器字长为8位)
-
MIPS R4000指令格式:RISC系统,字长32位,字节寻址
-
R型(寄存器)指令,算术运算,数据存放至寄存器内
-
source,target, destination
-
-
I型(立即数)指令,常用于访问存储器(取数LAD,或存数STO)
-
常见指令字段值
-
-
-
ARM的指令格式:字长32位的嵌入式处理机
-
Pentium指令格式:指令字长度可变,1B到12B,CISC结构
-
RS型指令,指令格式中只有一个存储器操作数
-
-
操作数类型
-
一般数据类型:地址数据,数值数据,字符数据,逻辑数据
-
Pentium数据类型:8位(字节),16位(字),32位(双字),64位(四字)
-
Power PC数据类型:处理8位,16位,32位,64位 RISC类型
-
指令和数据的寻址方式
-
寻址方式:形成操作数或指令地址的方式
-
顺序寻址方式:程序计数器,指令指针寄存器PC
-
跳跃寻址方式:下条指令的地址码不是由程序计数器给出,而是由本条指令给出
-
操作数基本寻址方式:操作数在指令给出,存放在寄存器中,存放在存储单元里
-
有效地址(物理地址),形式地址
-
-
A:address,D:data,R:register
-
偏移寻址
-
相对寻址:相对PC偏移
-
基址寻址:给出的地址字段是相对寄存器存放的地址的偏移量
-
变址寻址:寄存器存放的地址是给出的地址的偏移量
-
-
段寻址:段地址左移加段内偏移量
-
举例
-
Pentium寻址方式:外部总线宽度为36位,也支持32位物理地址空间
-
-
Power PC寻址方式
-
按指令类型分类寻址方式
-
-
典型指令
-
基本分类:数据处理,数据存储,数据传送,程序控制
-
具体分类:数据传送指令,算术运算类指令,逻辑运算类指令、程序控制类指令:如条件转移指令、输入输出类指令、字符串处理指令、特权指令、其他指令
-
复杂指令系统CISC
-
二八规律
-
VLSI工艺要求规整性
-
简化了软件,增加了硬件的复杂程度
-
-
精简指令系统RISC
-
选取频率使用高的简单指令,指令条数少
-
指令长度固定,指令格式种类少,寻址方式种类少
-
只有取数/存数指令访问存储器,其余都在寄存器间进行
-
-
-
ARM汇编语言