计算机组成原理第四章

第一节 指令格式

指令概念:又称机器指令,是指示计算机执行某种操作的命令,是计算机运行的最小功能单位。

一条指令就是机器语言的一个语句,一条指令通常要包括操作码和地址码两部分:操作码主要指明用户干什么,地址码主要指明对谁操作。

一、指令分类

按操作数个数分:

Ⅰ、零地址指令:不需要操作数,如空操作、停机、关中断等指令

Ⅱ、一地址指令:只需要单个操作数,如自增,自减,取反,求补,需要两个操作数,但其中一个隐含在某个寄存器中

Ⅲ、二地址指令:常用于两个操作数的算术运算、逻辑运算相关指令。

完成一条指令需要访存四次,分别为取值,读第一个操作数,读第二个操作数,写回第一个操作数。

Ⅳ、三地址指令:常用于两个操作数的计算,结果放在第三个地址中。

完成一条指令需要访存四次,分别为取值,读读一个操作数,读第二个操作数,写到第三个操作数。

※若指令长度不变,地址码数量越多,寻址能力就越差

按指令长度是机器指令的多少倍分:

Ⅰ、半长指令:是机器指令长度一半

Ⅱ、单字长指令:与机器指令长度一样

Ⅲ、双字长指令:是机器指令长度两倍

二、扩展操作码指令格式(考点:会设计指令系统)

概念:指令是定长的,但是操作码的长度可变。

通常情况下,使用频率高的指令使用短的操作码,减少指令译码和分析的时间。而使用频率低的指令使用长的操作码

定长指令和扩展操作码的比较

定长操作码扩展操作码
优点硬件设计简单,识别速度快在指令长度限制下仍有丰富指令
缺点指令难以增加,不灵活增加指令译码和分析难度,速度慢

【2017统考真题】某计算机按字节编址,指令字长固定且只有两种指令格式,其中三地址指令29条、二地址指令107条,每个地址字段为6位,则指令字长至少应该是()。

解答:三地址29条需要的位数是5位,多出3位,而107条需要6位。故总共5+6+12=23,因为按照字节编址,所以最少需要24位。

第二节 寻址方式(重点)

一、指令寻址(由PC指出)

Ⅰ、顺序寻址

PC+”1“,这里的1指指令字长,每次取值结束后PC会+1

Ⅱ、跳跃寻址

执行转移类指令导致的PC值改变

二、数据寻址(由本条指令的地址码指明真实地址)

非偏移指令

寻址方式有效地址优点缺点访存次数(指令执行期间)
直接寻址操作数的真实地址简单限制寻址范围1
间接寻址操作数地址的地址可扩大寻址范围指令在执行阶段要多次访存最少2次
寄存器寻址寄存器的地址不访问主存,速度快寄存器昂贵0
寄存器间接寻址寄存器地址,内部是操作数主存地址与一般的间址快但执行仍然会访存1
隐含寻址指令中隐含操作数地址有利于缩短指令字长需要增加存储操作数的硬件0
立即寻址就是操作数本身最快限制操作数范围0

偏移寻址(重中之重)

指令执行过程中,都会在将运算结果放入主存中,涉及一次访存。

Ⅰ、基址寻址

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

※采用通用寄存器作为基址寄存器 �0 的位数,根据通用寄存器的总数判断,程序运行前,CPU将BR的值修改为该程序的起始地址。

  • 基址寄存器是面向操作系统的,其内容由操作系统或管理程序确定。用户无法修改,在程序执行过程中,基址寄存器的内容不变(作为基地址),形式地址可变(作为偏移量)。
  • 当采用通用寄存器作为基址寄存器时,可由用户决定哪个寄存器作为基址寄存器,但其内容仍由操作系统确定。
  • 优点:可扩大寻址范围(基址寄存器的位数大于形式地址A的位数)

Ⅱ、变址寻址

有效地址EA等于指令字中的形式地址A与变址寄存器IX的内容相加之和,即EA= (IX)+A,其中IX可为变址寄存器(专用),也可用通用寄存器作为变址寄存器 。

  • 变址寄存器是面向用户的,在执行过程中,变址寄存器的内容可由用户改变(IX作为偏移量),形式地址A不变(作为基地址)。刚好与基址寻址相反。
  • 在针对数组处理过程中,不断改变IX的值,便很容易形成数组中任一数据的地址,特别适合编制循环程序
  • 基址变址复合执行。EA=(IX)+(BR)+A。

Ⅲ、相对寻址

相对寻址:把程序计数器PC的内容加上指令格式中的形式地址A而形成操作数的有效地址,即EA=(PC)+A,其中A是相对于PC所指地址的位移量,可正可负,补码表示 。

  • 优点:这段代码在程序内浮动时不用更改跳转指令的地址码
  • 相对寻址广泛应用于转移指令
  • 注意:对于JMP A转移指令,当从CPU中取出一字节时,会自动执行PC+1。若指令的地址为X,且占2B,在取出该指令后,会自定跳转到X+2+A。

堆栈寻址

操作数存放在堆栈中,隐含使用堆栈指针作为操作数地址。

  • 硬堆栈是将寄存器作为栈,成本很高;软堆栈是将主存作为栈,成本低。
  • 硬堆栈不访存,软堆栈访存一次

第三节 高级语言程序与机器级代码之间的对应

一、基本概念

  • 对操作数的操作地址只涉及三种:寄存器到寄存器,主存到寄存器,立即数到寄存器。
  • dword 32bit ;word 16bit ;byte 8bit
  • 通用寄存器 eax ebx ecx edx 变址寄存器 esi edi 堆栈寄存器 ebp esp。

二、选择结构语句的机器级表示

jejump when equal,
jnejump when not equal,
jgjump when greater,
jgejump when greater or equal
jljump when less
jlejump when less or equal

例如

cmp eax ,ebx #比较寄存器eax和ebx里的值 jg NEXT #若eax>ebx,则跳转到NEXT

三、循环结构语句的机器级表示

用条件指令实现循环

用loop指令实现循环

就是将”某些处理“封装到了Looptop内,使得代码更加简洁。

四、CISC和RISC

对比项目CISCRISC
指令系统复杂,庞大简单,精简
指令数目一般大于200条一般小于100条
指令字长不固定定长
可访存指令没有限制只有Load/Store指令
各种指令执行时间相差较大绝大多数在一个周期内完成
各指令使用频率有的常用,有点不常用一般都常用
通用寄存器的数量较少
控制方式绝大多数为微程序控制绝大多数为组合逻辑控制
指令流水线可以通过一定方式实现必须实现
  • 23
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值