计算机组成原理 第四章:指令系统

机组笔记 第一章 运算-CSDN博客

第二章、存储器-CSDN博客

第三章、Cache高速缓冲存储器-CSDN博客

第四章:指令系统-CSDN博客

第五章上:中央处理器CPU-CSDN博客

第五章下:微程序与微指令-CSDN博客

第六章 总线-CSDN博客

第七章:I/O设备-CSDN博客

第八章:IO控制方式-CSDN博客

指令:操作码+地址码

指令分类:

按指令的地址码数量分类:零地址指令,一地址指令,二地址指令……

零地址指令:不需要操作数或操作数隐含在固定位置(如:栈顶和次栈顶)

一地址指令:每个数的加一减一,取反求补等。 ;或者需要两个操作数,但有一个隐含在某个寄存器中(如上图中的000100指令,只有b的地址,因为a已经在ACC中)

二地址指令:

三地址指令:

四地址指令:

按操作码长度分类:

指令字长:一条指令的长度(指令的长度可能不同)

半字长指令、单字长指令、双字长指令:指令字长的机器字长的多少倍

  如:读取一条双字长指令需要两访存

定长指令字结构:指令系统中所有指令长度相等;变长~:~

定长操作码:指令系统中所有指令的操作码长度相同;可变~:~

按指令操作类型分类:

数据传送、运算类操作(算数逻辑操作、移位操作)、程序控制操作、输入输出操作

扩展操作码:定长指令字+可变长操作码

例:

设计扩展操作码需注意:短操作码不能是长操作码的前缀(否则会无法区别)

通常对使用频率高的指令分配较短的操作码,从而减少译码分析时间

例题:

 

指令寻址:如何确定下一条指令的地址?

PC:program counter 程序计数器,每读入一条指令自动加1(1指的是一条指令的指令字长),所以PC始终指向下一条指令

顺序寻址:

  指令字长不变:

     指令字长=存储字长=2B      指令字长=1/2存储字长=1B

      

               

  指令字长可变:

      

跳跃寻址:

当读到3时,PC照常加一,此时PC=4,因为第4条指令为JMP 7:意为跳转到地址为7的指令,于是PC被改为7,下一条指令为7,当读取7时,PC在加1,PC=8

数据寻址:数据寻址有多种类型

直接寻址

指令字中的形式地址就是操作数的真实地址。即EA=A

间接寻址

寄存器寻址,寄存器间接寻址(寄存器昂贵,速度快,容量小)

             

隐含寻址:类比上面一地址指令中的隐含操作数

立即寻址:形式地址即是数据本身(用#作为该方式的寻址特征)

偏移寻址(某一段地址+ 偏移量A):基址寻址、变址寻址、相对寻址

基址寻址:  R0指明将那个通用寄存器作为基址寄存器使用

基址寄存器中存放的是程序开始的地址,由操作系统存取,用户不能更改

变址寻址:物理结构与基址寻址一样,但变址寄存器面向用户,内容可由用户改变

变址寻址常用于循环程序:

相对寻址:

读取到M+3时,PC=M+4

堆栈寻址

硬堆栈:将一寄存器作为堆栈;软堆栈:将主存的一部分作为堆栈

有一指针指向栈顶(栈顶是会变的,指针始终指向栈顶)

Msp:SP指向的地址对应的数值

CISC和RISC:指令系统的两种设计方向

CSIC:复杂指令集/RISC:简单指令集:

用python类比:CSIC是包含许多库函数的python程序;RISC只有基本操作没有函数前者复杂后者简单

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值