打印
[RISC-V MCU 应用开发]

从零开始设计RISC-V处理器——指令系统

[复制链接]
楼主: 9dome猫
手机看帖
扫描二维码
随时随地手机跟帖
41
9dome猫|  楼主 | 2022-5-28 18:22 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
13.SW:sw指令 将操作数寄存器rs2中的32位数据,写回存储器。

如:
lui x1,0xf0f11
addi x1,x1,0x7ff
sw x1,12,x0

使用特权

评论回复
42
9dome猫|  楼主 | 2022-5-28 18:22 | 只看该作者
汇编器执行结果如下:

使用特权

评论回复
43
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

使用特权

评论回复
44
9dome猫|  楼主 | 2022-5-28 19:36 | 只看该作者
现在X1寄存器存入一个0x3ef127ff,然后将这32位数存入数据存储器,再从数据存储器中依次读一个字节并进行符号扩展后存入寄存器。汇编器执行结果如下:
X1寄存器:

使用特权

评论回复
45
9dome猫|  楼主 | 2022-5-28 19:37 | 只看该作者
数据存储器:

使用特权

评论回复
46
9dome猫|  楼主 | 2022-5-28 19:39 | 只看该作者
符号扩展写入寄存器:

使用特权

评论回复
47
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

使用特权

评论回复
48
9dome猫|  楼主 | 2022-5-28 19:40 | 只看该作者
汇编器执行结果如下:

数据存储器:



使用特权

评论回复
49
9dome猫|  楼主 | 2022-5-28 19:41 | 只看该作者
符号扩展写入寄存器:

使用特权

评论回复
50
9dome猫|  楼主 | 2022-5-28 19:48 | 只看该作者
(思考:这里的X5中的83是什么,调出来数据存储器的数据可以看到,由于这里的地址是非对其访问,读两个字节就需要访问两个存储块。因此,为了提升指令的运行效率,使用load和store指令时,尽量采用边界对齐的地址访问)

使用特权

评论回复
51
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

使用特权

评论回复
52
9dome猫|  楼主 | 2022-5-28 19:50 | 只看该作者
汇编器的执行结果如下:

数据存储器:

使用特权

评论回复
53
9dome猫|  楼主 | 2022-5-28 19:51 | 只看该作者
寄存器:

使用特权

评论回复
54
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

使用特权

评论回复
55
9dome猫|  楼主 | 2022-5-28 19:52 | 只看该作者
汇编器的执行结果如下:

数据存储器:

使用特权

评论回复
56
9dome猫|  楼主 | 2022-5-28 19:52 | 只看该作者
零扩展写入寄存器:

使用特权

评论回复
57
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

使用特权

评论回复
58
9dome猫|  楼主 | 2022-5-28 19:54 | 只看该作者
汇编器执行结果如下:

数据存储器:

使用特权

评论回复
59
9dome猫|  楼主 | 2022-5-28 19:56 | 只看该作者
19.SLT:slt指令将操作数寄存器rs1中的数值与寄存器rs2当作有符号数进行比较。小于则置一,即如果rs1中的值小于rs2中的值,则输出1,否则输出0,结果写回rd。

使用特权

评论回复
60
9dome猫|  楼主 | 2022-5-28 19:56 | 只看该作者
如:
addi x1,x0,-1
addi x2,x0,1
slt x3,x1,x2

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则