写给自己看的指令系统

咯咯咯写个笔记给自己看。。如果你们想看也可以偷偷看看
指令格式
PC:程序计数器
指令:就是要计算机执行某种操作的命令
指令系统:一台计算机所有机器指令的集合
1.指令系统是一台机器硬件能执行的指令全体
2.任何程序运行前都要转换成机器语言程序
3.指令系统是计算机软/硬件的界面

引入指令系统后,避免了用户与二进制代码直接接触

一、指令基本格式:

操作码字段op 地址码字段

操作码字段:该指令应该执行什么样的操作和具有何种功能
地址码字段:给出被操作的信息(指令或数据)的地址,有多个地址码
1.PC存放当前欲执行指令的地址,而指令的地址码字段则保存操作数地址
2.指令的地址个数与指令的长度是否固定没有必然联系,即使是单地址指令也可能由于单地址的寻址方式不同而导致指令长度不同

1.零地址指令

OP

(1)不需要操作数的指令。如:空指令操作
(2)零地址的运算类指令仅用在堆栈计算机中。

普及一下堆和栈的区别:
一、堆栈空间分配区别:
1、栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈;
2、堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。
二、堆栈缓存方式区别:
1、栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放;
2、堆是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。
堆:内存中,存储的是引用数据类型,引用数据类型无法确定大小,堆实际上是一个在内存中使用到内存中零散空间的链表结构的存储空间,堆的大小由引用类型的大小直接决定,引用类型的大小的变化直接影响到堆的变化
栈:是内存中存储值类型的,大小为2M,超出则会报错,内存溢出
三、堆栈数据结构区别:
堆(数据结构):堆可以被看成是一棵树,如:堆排序;
栈(数据结构):一种先进后出的数据结构。
特点:先进后出

2.一地址指令

op A1

(1)按A1地址读取操作数,进行OP操作后,结果在存回原地址,指令含义:OP(A1)——>A1
3.二地址指令

OP A1 A2

4.三地址指令

OP A1 A2 A3(结果)

5.四地址指令

OP A1 A2 A3(结果) A4(下址)

二、定长操作码:在指令字的最高位部分分配固定的若干位(字长)表示操作码
三、扩展操作码:全部指令的操作码字段的位数不同
写给自己看的指令系统_第1张图片
目的:保持指令字长度不变而增加指令的数量
注意:
1.不允许短码是长码的前缀,即短操作码不能与长操作码的前面部分代码相同
2.各指令的操作码一定不能重复

指令的寻址方式
指确定本条指令的数据地址以及下一条待执行指令的地址的方式
(A)形式地址:指令中地址码字段并不代表操作数的真实地址
(EA)有效地址:形式地址结合寻址方式,可以计算出操作数在存储器中的真实地址
一、指令地址
寻址方式:
(1)顺序:通过计数器(PC)加1(1个指令字长),自动形成下一条指令的地址
(2)跳跃:下一条指令仍然通过PC给出
二、数据地址
设一个字段指明属于那种寻址方式

操作码 寻址特征 形式地址A

数据寻址方式
1.隐含寻址
不明显的给出操作数的地址,而在指令中隐含操作数的地址
优点:有利于缩短指令字长
缺点:需增加存储操作数或隐含地址的硬件
写给自己看的指令系统_第2张图片
2.立即寻址
优点:指令在执行阶段不访问主页,指令执行时间最短
缺点:A的位数限制了立即数的范围
#表示立即寻址特征
A操作数本身(地址段字段指出的不是操作数的地址,而是操作数本身,又叫立即数)
写给自己看的指令系统_第3张图片3.直接寻址
指令中形式地址A就是操作数的真实地址EA,EA=A
优点:简单指令在执行阶段只访问一次主存,不需要专门计算机操作数的地址
缺点:A的位数决定了该指令操作数的寻址范围,操作数的地址不易修改
写给自己看的指令系统_第4张图片4.间接寻址
指令的地址字段给出的是操作数有效地址所在的存储单元的地址,也就是操作数地址的地址EA=(A)
写给自己看的指令系统_第5张图片
5.寄存器寻址
指在指令字中直接给出操作数所在的寄存编号EA=Ri
优点:指令在执行阶段不访问主存,只访问寄存器,执行速度快,支持向量/矩阵运算
缺点:寄存器价格昂贵,计算机中寄存器个数有限
写给自己看的指令系统_第6张图片

6.寄存器间接寻址
在寄存器Ri中给出的不是一个操作数,而是操作数所在的主存单元的地址,EA=(Ri)
速度更快,但是需要访问主存
写给自己看的指令系统_第7张图片
7.相对寻址
把程序计数器(PC)的内容加上指令格式汇总的形式地址A二形成操作数的有效地址EA=(PC)+A,A是相对于当前指令地址的位移量,可正可负,补码表示,决定操作数的寻址范围
优点:操作数的地址不是固定的,随PC变化且与指令地址之间总是相差一个固定值
缺点:
写给自己看的指令系统_第8张图片

8.基址寻址
将CPU中基址寄存器(BR)的内容加上指令格式中的形式地址A而形成操作数的有效地址EA=(BR)+A

写给自己看的指令系统_第9张图片
优点:可以扩大寻址范围,有利于多道程序设计
9.变址寻址
有效地址EA等于指令字中的形式地址A与变址寄存器IX的内容之和EA=(IX)+A
立足于用户可扩大寻址范围
写给自己看的指令系统_第10张图片

10.堆栈寻址
写给自己看的指令系统_第11张图片

CISC和RISC的基本概念
1.复杂指令系统计算机(CISC):增强原有指令功能,设置更为复杂的新指令实现软件功能硬化。如:X86架构计算机
2.精简指令系统设计计算机(RISC):减少指令种类和简化指令功能,提高指令执行速度。如:ARM、MIPS架构计算机
对比:

CISC RISC按边界对齐存放
指令系统 复杂、庞大 简单、精简
指令数目 一般大于200条 一般小于100条
指令字长 不固定 定长
可访问指令 不加限制 只有Laod/Store指令
各种指令执行时间 相差较大 绝大多数在一个周期内完成
各种指令使用频度 相差较大 都比较常用
通常寄存器数量 较少
目标代码 难以优化编译生成高效的目标代码程序 采用优化的编译程序,生成代码较为高效
控制方式 绝大多数为微程序控制 绝大多数为组合逻辑控制
指令流水线 可以通过一定方式实现 必须实现

你可能感兴趣的:(计算机组成原理)