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

[复制链接]
 楼主| 9dome猫 发表于 2022-5-28 18:22 | 显示全部楼层
13.SW:sw指令 将操作数寄存器rs2中的32位数据,写回存储器。

如:
lui x1,0xf0f11
addi x1,x1,0x7ff
sw x1,12,x0
 楼主| 9dome猫 发表于 2022-5-28 18:22 | 显示全部楼层
汇编器执行结果如下:
779316291f7dd78971.png
 楼主| 9dome猫 发表于 2022-5-28 19:35 | 显示全部楼层
14.LB:lb指令从存储器中读回一个8位的数据,进行符号位扩展后写回寄存器rd。

如:
lui x1,0x3ef12
addi x1,x1,0x7ff
sw x1,12,x0
lb x2,12,x0
lb x3,13,x0
lb x4,14,x0
lb x5,15,x0
 楼主| 9dome猫 发表于 2022-5-28 19:36 | 显示全部楼层
现在X1寄存器存入一个0x3ef127ff,然后将这32位数存入数据存储器,再从数据存储器中依次读一个字节并进行符号扩展后存入寄存器。汇编器执行结果如下:
X1寄存器:
755646292093c96edf.png
 楼主| 9dome猫 发表于 2022-5-28 19:37 | 显示全部楼层
数据存储器:
402916292094f53e5f.png
 楼主| 9dome猫 发表于 2022-5-28 19:39 | 显示全部楼层
符号扩展写入寄存器:
33942629209829887d.png
 楼主| 9dome猫 发表于 2022-5-28 19:40 | 显示全部楼层
15.LH:lh指令从存储器中读回一个16位的数据,进行符号位扩展后写回寄存器rd。

如:
lui x1,0x3ef12
addi x1,x1,0x7ff
sw x1,12,x0
lh x2,12,x0
lh x3,13,x0
lh x4,14,x0
lh x5,15,x0
 楼主| 9dome猫 发表于 2022-5-28 19:40 | 显示全部楼层
汇编器执行结果如下:

数据存储器:

6817762920a2b3cead.png

 楼主| 9dome猫 发表于 2022-5-28 19:41 | 显示全部楼层
符号扩展写入寄存器:
5531462920a719d0a6.png
 楼主| 9dome猫 发表于 2022-5-28 19:48 | 显示全部楼层
(思考:这里的X5中的83是什么,调出来数据存储器的数据可以看到,由于这里的地址是非对其访问,读两个字节就需要访问两个存储块。因此,为了提升指令的运行效率,使用load和store指令时,尽量采用边界对齐的地址访问)
 楼主| 9dome猫 发表于 2022-5-28 19:49 | 显示全部楼层
16.LW:lw指令从存储器中读回一个32位的数据,写回寄存器rd。

如:
lui x1,0xf0f11
addi x1,x1,0x7ff
sw x1,0,x0
lw x2,0,x0
 楼主| 9dome猫 发表于 2022-5-28 19:50 | 显示全部楼层
汇编器的执行结果如下:

数据存储器:
6624262920c7e11137.png
 楼主| 9dome猫 发表于 2022-5-28 19:51 | 显示全部楼层
寄存器:
8588762920c904d02b.png
 楼主| 9dome猫 发表于 2022-5-28 19:51 | 显示全部楼层
17.LBU:lbu指令从存储器中读回一个8位的数据,进行高位补零扩展后写回
寄存器rd。

如:
lui x1,0x3ef12
addi x1,x1,0x7ff
sw x1,12,x0
lbu x2,12,x0
lbu x3,13,x0
lbu x4,14,x0
lbu x5,15,x0
 楼主| 9dome猫 发表于 2022-5-28 19:52 | 显示全部楼层
汇编器的执行结果如下:

数据存储器:
9299062920ce97457c.png
 楼主| 9dome猫 发表于 2022-5-28 19:52 | 显示全部楼层
零扩展写入寄存器:

4981862920d0acae09.png
 楼主| 9dome猫 发表于 2022-5-28 19:54 | 显示全部楼层
18.LHU:lhu指令从存储器中读回一个16位的数据,进行高位补零扩展后写回寄存器rd。

如:
lui x1,0x3ef12
addi x1,x1,0x7ff
sw x1,12,x0
lhu x2,12,x0
lhu x3,13,x0
lhu x4,14,x0
lhu x5,15,x0
 楼主| 9dome猫 发表于 2022-5-28 19:54 | 显示全部楼层
汇编器执行结果如下:

数据存储器:

1047562920d6e84294.png
 楼主| 9dome猫 发表于 2022-5-28 19:56 | 显示全部楼层
19.SLT:slt指令将操作数寄存器rs1中的数值与寄存器rs2当作有符号数进行比较。小于则置一,即如果rs1中的值小于rs2中的值,则输出1,否则输出0,结果写回rd。
 楼主| 9dome猫 发表于 2022-5-28 19:56 | 显示全部楼层
如:
addi x1,x0,-1
addi x2,x0,1
slt x3,x1,x2
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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