计组实验添加指令

本文详细介绍了在计组实验中如何添加不同类型的指令,包括bne、sll/srl、jr、jalr、slti、sltiu等。通过分析指令格式和操作,逐步解释了如何修改NPC、ALU以及控制信号,以实现这些指令的功能。
摘要由CSDN通过智能技术生成

惭愧惭愧, 之前一直不知道计组实验究竟是在干嘛, 所以基本没花时间。
今天用了大概两个小时左右将基本的流程都看明白了。

基本操作

指令添加

bne

分析一下beq指令的格式:
beq 的op 为 000100


10651191-e79ca4c06a521df4.png
beq指令

我们知道beq指令是需要根据ALU的零信号来判断, 如果零信号有效, 也就是两个数据相等则跳转。(在这里跳转的含义就是NPC的值被修改为一个新的值)

先从最简单的bne指令开始。

op : 000101

10651191-b6354e69dc9cb628.png
bne指令
10651191-697fc7d1be2930c6.png
对比

说明一下NPCOp = 01的时候就是计算i类型跳转指令(其实也就bne和beq两条)姚跳转的地址。
所以我们只需要去修改 NPCOp[0]就行啦。

ok, 貌似到这里第一条指令就添加完成了。

sll & srl

这也是一条R类型的指令

op = 000000, funct = 000000

10651191-6363d660829e84e0.png
sll & srl

添加jr指令

这条指令的含义就是PC的值直接变为某个寄存器的值, 需要注意的是jr指令本身是一条R类型的指令。

想: 既然PC的值在执行jr这条指令的时候, 必须要得到寄存器的一个值, 而且是Rs这个寄存器号对应的值, 那就必须有一条线

所以,修改NPC


10651191-8ed15bf11e8af927.png
修改NPC
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值