计算机组成与设计(二)——算术逻辑运

 算术运算

计算机结构的简化模型(模型机)

 

 

演示实例一

add $8,$9,$10格式被Latex强行改变,不知道怎么办555。。。演示加法运算

1、首先取指令,即得到得到指令的编码

  • 查指令编码表知opcode = 0,function = 0x20,shamt = 0(非移位指令)
  • opcode = 0说明这是一个R型指令(其实,所有的R型指令opcode都为0,所有opcode=0的指令也都是R型指令),根据指令操作数得到:rd = 8(目的寄存器),rs = 9(第一个源寄存器),rt=10(第二个源寄存器)

2、进行运算

CPU通过取指,就会把这条指令从内存中取出,并放入IR寄存器中,也就是指令编码的寄存器。指令译码将指令指定的寄存器(9号和10号)通过内部总线传到ALU,控制电路还会将ALU的输出通过总线传送到8号寄存器的输入。

像这样两个源寄存器、一个目的寄存器的指令编码称为R型指令,还有:

add  rd,rs,rt        //产生溢出时,会向控制器报告异常,由控制器进行相关联的处理
addu  rd,rs,rt      //发生溢出时不会报告异常
sub  rd,rs,rt        
subu  rd,rs,rt

 

 演示实例二

这里的源操作数都是寄存器,若有一个源操作数是立即数的话,就需要采用另一种指令——I型指令。

add  $$21,$22,-50为例

1、首先取指令,即得到得到指令的编码

  • 查指令编码表得到opcode = 8
  • 分析指令得到rs = 22(源寄存器编号),rt = 21(目的寄存器编号),immediate = -50(立即数)

2、执行过程如图,与上面的类似

这样的I型指令还有

addi  rt,rs,imm         #R[rt] = R[rs] + SignExtImm(符号扩展)
addiu  rt,rs,imm        #R[rt] = R[rs] + SignExtImm(符号扩展)

 

逻辑运算指令

R型

and  rd,rs,rt         #R[rd] = R[rs] & R[st]
or  rd,rs,rt         #R[rd] = R[rs] | R[rt]
nor  rd,rs,rt         #R[rd] = ~(R[rs] | R[rd])

I型

andi rt,rs,imm        #R[rt] = R[rs] & ZeroExtImm(0扩展)        
ori  rt,rs,imm        #R[rt] = R[rs] | ZeroExtImm(0扩展)

注意:在算术运算中,立即数都是采用符号扩展,而在逻辑运算中,立即数采用0扩展,这也很容易理解,因为算术运算要保证数值的正确性,如符号扩展不会改变数值大小。

 

参考链接:https://www.coursera.org/learn/jisuanji-zucheng/lecture/uYju6/301-suan-zhu-yun-suan-he-luo-ji-yun-suan

转载于:https://www.cnblogs.com/lfri/p/10040377.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值