[RISC-V MCU 应用开发] 从零开始设计RISC-V处理器——指令系统

[复制链接]
 楼主| 9dome猫 发表于 2022-5-28 16:57 | 显示全部楼层
汇编器执行结果如下:

226046291e404a85b1.png

 楼主| 9dome猫 发表于 2022-5-28 16:58 | 显示全部楼层
6.BNE:bne指令只有在操作数寄存器rs1中的数值与操作数寄存器rs2的数值不相等时,才会跳转,跳转地址为offset的有符号扩展和最低位补0(即乘以2)的偏移量加上BNE指令的地址。

如:
addi x1,x0,1
label1:
add x1,x1,x1
addi x2,x0,4
bne x1,x2,label1 二进制:11111110001000001001110011100011
 楼主| 9dome猫 发表于 2022-5-28 16:59 | 显示全部楼层
汇编器执行结果如下:
777886291e45a40ce7.png
 楼主| 9dome猫 发表于 2022-5-28 16:59 | 显示全部楼层
7.BTL:blt指令只有在操作数寄存器rs1中的数值小于操作数寄存器rs2的数值时(有符号数),才会跳转,跳转地址为offset的有符号扩展和最低位补0(即乘以2)的偏移量加上BLT指令的地址。

如:
addi x1,x0,-1
label1:
add x1,x1,x1
addi x2,x0,-2
blt x1,x2,label1 二进制:11111110001000001100110011100011
 楼主| 9dome猫 发表于 2022-5-28 17:06 | 显示全部楼层
汇编器执行结果如下:
304746291e62145848.png
 楼主| 9dome猫 发表于 2022-5-28 17:07 | 显示全部楼层
8.BGE:bge指令只有在操作数寄存器rs1中的数值大于或等于操作数寄存器rs2的数值时(有符号数),才会跳转,跳转地址为offset的有符号扩展和最低位补0(即乘以2)的偏移量加上BGE指令的地址。
(注意bge指令的条件是大于等于,而blt的条件是小于)
 楼主| 9dome猫 发表于 2022-5-28 17:16 | 显示全部楼层
如:
addi x1,x0,-1
label1:
add x1,x1,x1
addi x2,x0,-2
bge x1,x2,label1 二进制:11111110001000001101110011100011
 楼主| 9dome猫 发表于 2022-5-28 17:18 | 显示全部楼层
汇编器执行结果如下:
23166291e8c6b629b.png
 楼主| 9dome猫 发表于 2022-5-28 17:20 | 显示全部楼层
9.BLTU:bltu指令只有在操作数寄存器rs1中的数值小于操作数寄存器rs2的数值时(无符号数),才会跳转,跳转地址为offset的有符号扩展和最低位补0的偏移量加上BLTU指令的地址。

如:
addi x1,x0,-1
label1:
add x1,x1,x1
addi x2,x0,2
bltu x1,x2,label1 二进制:11111110001000001110110011100011
 楼主| 9dome猫 发表于 2022-5-28 17:32 | 显示全部楼层
这里一定是不跳转的,X1的值为-2,但是将其看作是一个无符号的数,就是一个非常大的正数。汇编器执行结果如下:
有符号表示:
982126291ec440b9d2.png
 楼主| 9dome猫 发表于 2022-5-28 17:37 | 显示全部楼层
无符号表示:
531326291ed57e2ac8.png
 楼主| 9dome猫 发表于 2022-5-28 17:40 | 显示全部楼层
10.BGEU:bgeu指令只有在操作数寄存器rs1中的数值大于或等于操作数寄存器rs2的数值时(无符号数),才会跳转,跳转地址为offset的有符号扩展和最低位补0的偏移量加上BGEU指令的地址。
 楼主| 9dome猫 发表于 2022-5-28 17:42 | 显示全部楼层
如:
addi x1,x0,-1
label1:
add x1,x1,x1
addi x2,x0,-2
bgeu x1,x2,label1 二进制:11111110001000001111110011100011

这里一定是跳转一次的,因为刚开始时X1=X2,跳转一次后不会再跳转。
 楼主| 9dome猫 发表于 2022-5-28 17:47 | 显示全部楼层
汇编器执行如果如下:

有符号表示:
402556291ef9510df0.png
 楼主| 9dome猫 发表于 2022-5-28 17:48 | 显示全部楼层
无符号表示:
576086291effc7dc8c.png

 楼主| 9dome猫 发表于 2022-5-28 17:50 | 显示全部楼层
11.SB:sb指令 将操作数寄存器rs2中的低8位数据,写回存储器

如:
addi x1,x0,0xf1
addi x2,x0,0xf2
addi x3,x0,0xf3
addi x4,x0,0xf4
sb x1,0,x0
sb x2,1,x0
sb x3,2,x0
sb x4,3,x0
 楼主| 9dome猫 发表于 2022-5-28 17:51 | 显示全部楼层
汇编器执行结果如下:
544386291f078b2293.png
 楼主| 9dome猫 发表于 2022-5-28 17:52 | 显示全部楼层
12.SH:sh指令 将操作数寄存器rs2中的低16位数据,写回存储器。

如:
lui x1,0xf0f11
addi x1,x1,0x7ff
sh x1,12,x0
 楼主| 9dome猫 发表于 2022-5-28 17:53 | 显示全部楼层
汇编器执行结果如下:

寄存器X1:

264836291f0e8ddfc8.png
 楼主| 9dome猫 发表于 2022-5-28 17:53 | 显示全部楼层
数据存储器:
695866291f12b41d24.png
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部