【计算机组成原理】二、指令系统

目录

指令系统
     ~~~~     1.基本概念
     ~~~~     2.指令系统的功能
         ~~~~~~~~         (1)2种架构
         ~~~~~~~~         (2)操作数
         ~~~~~~~~         (3)地址空间
         ~~~~~~~~         (4)编址方式
         ~~~~~~~~         (5)操作类型
     ~~~~     3.指令格式
         ~~~~~~~~         (1)基本格式
         ~~~~~~~~         (2)变长指令和等长指令
         ~~~~~~~~         (3)4种CPU结构
         ~~~~~~~~         (4)操作码扩展技术
     ~~~~     4.指令寻址
         ~~~~~~~~         (1)顺序寻址
         ~~~~~~~~         (2)跳跃寻址
     ~~~~     5.数据寻址
         ~~~~~~~~         (1)立即寻址
         ~~~~~~~~         (2)寄存器寻址
         ~~~~~~~~         (3)存储器寻址
         ~~~~~~~~         (4)堆栈寻址


二、指令系统

1.基本概念

  • 指令系统:计算机拥有的全部指令的集合

  • ISA :Instruction Set Architecture,指令系统结构

包括:指令系统功能、数据类型、寄存器结构、内存组织、寻址方式、中断和I/O处理方式等

2.指令系统的功能

(1)2种架构
  • RISC :Reduced Instruction Set Computer,精简指令系统计算机

  • CISC :Complex Instruction Set Computer ,复杂指令系统计算机

CISC存在的问题:

  • 软件硬化:用一条功能复杂的新指令来取代原先需一 串指令完成的功能
  • 支持高级语言程序:增加新的复杂指令以及复杂的寻址方式
  • 软件兼容:系列机软件要求向上兼容和向后兼容,指令系统不断扩大
(2)操作数

指机器指令中的数据,即硬件可以直接识别和处 理的数据

(3)地址空间

主要对:CPU中的通用寄存器主存储器I/O设备编址

有以下3种方式:

  • 三地址空间
  • 两地址空间:主存+I/O统一编址、寄存器单独编址
  • 一地址空间
  • 无地址空间
(4)编址方式

基本的方式有两种:

  • 按字编址
  • 按字节编址

考虑编址顺序:

  • 小端方式:低字节低地址
  • 大端方式:高字节低地址

考虑对齐方式:

  • 边界对齐
  • 边界不对齐
(5)操作类型
  • 数据传送指令
  • 数据运算指令

包括:算术运算指令、逻辑运算指令、移位指令 、位操作指令

  • 程序控制指令
  • 输入输出指令
  • 其他

如:等待指令、停机指令、空操作指令等

3.指令格式

(1)基本格式

在这里插入图片描述

(2)变长指令和等长指令
  • 等长指令字结构:所有指令字长均相等,通常,指令字长=机器字长
  • 变长指令字结构:各种指令长度不等
(3)4种CPU结构

在这里插入图片描述
(a)堆栈结构

操作数都是隐式的,即源操作数来自堆栈的栈顶,运算后把结果写入栈顶

指令示例:ADD

(b)累加器结构

一个操作数是隐式的,即累加器;另一个操作数来自存储器单元,运算结果送回累加器

指令示例:ADD [100]

(c )RS型通用寄存器结构

两个源操作数都来自通用寄存器组

指令示例:ADD AX,BX

(d)RR型通用寄存器结构

一个源操作数来自通用寄存器组,另一个操作数来自存储单元

指令示例:ADD AX,[100]

ARM:ADD $s1,$s2,$s3

(4)操作码扩展技术

示例:
在这里插入图片描述

4.指令寻址

即确定下一条指令所在主存中的单元地址的方法。

(1)顺序寻址

通过程序计数器PC“加1”自动形成下一条指令,所谓的“加1”是指加指令字长

(2)跳跃寻址

由转移类指令给出下一条指令的地址信息。

5.数据寻址

在这里插入图片描述

(1)立即寻址

即操作数直接在指令的地址码字段给出,形式地址是操作数本身。

例如:ADD AX,100,其中100是立即数,从IR中取出

(2)寄存器寻址

操作数在寄存器中,地址码形式地址给出通用寄存器编号。

例如:ADD AX,BX

MIPS 32:add $s1,$s2,$s3

(3)存储器寻址

存储器寻址又分:直接寻址、间接寻址、寄存器间接寻址、偏移寻址、段寻址

  • 直接寻址

在形式地址中直接给出操作数或者下一条指令的有效地址。

如IA-32指令:mov eax,[100]

[100]就是直接在主存中找到100这个地址对应的操作数

  • 间接寻址(存储器的间接寻址)

简介寻址给出的是操作数地址的地址,类似C语言的二重指针。

有效地址: E A = ( ( A ) ) EA=((A)) EA=((A))

如IA-32指令:jump word ptr[100]

先找到主存中100所存的操作数x,再找到主存中x所存的操作数。

  • 寄存器间接寻址

形式地址给出的是寄存器的编号。

有效地址: E A = ( R i ) EA=(Ri) EA=(Ri)

  • 偏移寻址

形式上:直接寻址和寄存器间接寻址的结合。

偏移寻址又分:相对寻址、变址寻址、基址寻址。

[1、相对寻址]

引用专门的程序计数器PC, E A = ( P C ) + A EA=(PC)+A EA=(PC)+A

指令中只需给出偏移量A,寻址范围取决于偏移量的位数 k k k,即范围为: ( P C ) − 2 k − 1 , ( P C ) + 2 k − 1 − 1 (PC)-2^{k-1},(PC)+2^{k-1}-1 (PC)2k1,(PC)+2k11

[2、变址寻址]

引用变址寄存器(可以是专用的寄存器或者通用寄存器)

若是专用的寄存器Rx,地址字段无需给出;若是通用寄存器Ri,需要给出编号。

变址寄存器存放地址的修改量,形式地址给出基本地址。

有效地址: E A = ( R i ) + A EA=(Ri)+A EA=(Ri)+A

[3、基址寻址]

引用一个基址寄存器Rb,可以是专用或通用的。

有效地址: E A = ( R b ) + A EA=(Rb)+A EA=(Rb)+A

一般基地址不变,偏移量可以改变。

  • 段寻址

用于地址长度超过机器字长的情形。

(4)堆栈寻址

有寄存器堆栈(硬堆栈)和存储器堆栈(软堆栈)。

常使用存储器堆栈。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

指针常量

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值