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

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

[复制链接]
楼主: 9dome猫
手机看帖
扫描二维码
随时随地手机跟帖
61
9dome猫|  楼主 | 2022-5-28 19:57 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
汇编器执行结果如下:

使用特权

评论回复
62
9dome猫|  楼主 | 2022-5-28 19:58 | 只看该作者
20.SLTU:sltu指令将操作数寄存器rs1中的数值与寄存器rs2当作无符号数进行比。如果rs1中的值小于rs2中的值,则输出1,否则输出0,结果写回rd。

使用特权

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

使用特权

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

使用特权

评论回复
65
9dome猫|  楼主 | 2022-5-28 20:00 | 只看该作者
21.SLTI:slti指令将操作数寄存器rs1中的数值与12位立即数当作有符号数进行比较,如果rs1中的值小于立即数的值,则输出1,否则输出0,结果写回rd。

使用特权

评论回复
66
9dome猫|  楼主 | 2022-5-28 20:01 | 只看该作者
如:
addi x1,x0,-1
slti x2,x1,1
汇编器执行结果如下:

使用特权

评论回复
67
9dome猫|  楼主 | 2022-5-28 20:02 | 只看该作者
22.SLTIU:sltiu指令将操作数寄存器rs1中的数值与12位立即数当作无符号数进行比较,如果rs1中的值小于立即数的值,则输出1,否则输出0,结果写回rd。

如:
addi x1,x0,-1
sltiu x2,x1,1

汇编器执行结果如下:

使用特权

评论回复
68
9dome猫|  楼主 | 2022-5-28 20:04 | 只看该作者
23.SLL:逻辑左移(SLL)根据寄存器(rs2)中的移位量对寄存器(rs1)中的值执行逻辑左移,并存储在(rd)寄存器中。

如:
addi x1,x0,4
addi x2,x0,0xf0
sll x3,x2,x1

汇编器执行结果如下:


使用特权

评论回复
69
9dome猫|  楼主 | 2022-5-28 20:04 | 只看该作者
24.SRL:逻辑右移(SRL)根据寄存器(rs2)中的移位量对寄存器(rs1)中的值执行逻辑右移,左边空出来的位补0,并存储在(rd)寄存器中。

如:
addi x1,x0,4
addi x2,x0,-0xf0
srl x3,x2,x1

汇编器执行结果如下:

使用特权

评论回复
70
9dome猫|  楼主 | 2022-5-28 20:05 | 只看该作者
25.SRA:算数右移(SRA)根据寄存器(rs2)中的移位量对寄存器(rs1)中的值执行算数右移,左边空出来的位补符号位,并存储在(rd)寄存器中。

如:
addi x1,x0,4
addi x2,x0,-0xf0
sra x3,x2,x1

汇编器执行结果如下:

使用特权

评论回复
71
9dome猫|  楼主 | 2022-5-28 20:06 | 只看该作者
26.SLLI:slli指令根据5位立即数的移位量对寄存器(rs1)中的值执行逻辑左移(低位补零),并存储在(rd)寄存器中。

使用特权

评论回复
72
9dome猫|  楼主 | 2022-5-28 20:07 | 只看该作者
27.SRLI:srli指令根据5位立即数的移位量对寄存器(rs1)中的值执行逻辑右移(高位补零),并存储在(rd)寄存器中。

使用特权

评论回复
73
9dome猫|  楼主 | 2022-5-28 20:08 | 只看该作者
28.SRAI:srai指令根据5位立即数的移位量对寄存器(rs1)中的值执行算数右移(高位补入符号位),并存储在(rd)寄存器中。

使用特权

评论回复
74
9dome猫|  楼主 | 2022-5-28 20:09 | 只看该作者
如:
addi x2,x0,-0xf0
slli x3,x2,4
srli x4,x2,4
srai x5,x2,4

汇编器执行结果如下:

使用特权

评论回复
75
9dome猫|  楼主 | 2022-5-28 20:10 | 只看该作者
29.ADD:add指令将寄存器(rs1)与寄存器(rs2)中的值相加,并写回(rd)寄存器中。

使用特权

评论回复
76
9dome猫|  楼主 | 2022-5-28 20:10 | 只看该作者
30.SUB:sub指令将寄存器(rs1)与寄存器(rs2)中的值相减,并写回(rd)寄存器中。

使用特权

评论回复
77
9dome猫|  楼主 | 2022-5-28 20:11 | 只看该作者
31.ADDI:addi指令将操作数寄存器rs1的整数值与12位立即数进行加法操作,
结果写回寄存器rd。

如:
addi x1,x0,-1
add x2,x1,x1
sub x3,x2,x1

汇编器执行结果如下:

使用特权

评论回复
78
9dome猫|  楼主 | 2022-5-28 20:12 | 只看该作者
32.XOR:xor指令在寄存器(rs1)的内容和寄存器(rs2)的内容之间执行逐位逻辑“异或”运算,并存储在(rd)寄存器中。

使用特权

评论回复
79
9dome猫|  楼主 | 2022-5-28 20:13 | 只看该作者
33.OR:or指令在寄存器(rs1)的内容和寄存器(rs2)的内容之间执行逐位逻辑“或”运算,并存储在(rd)寄存器中。

使用特权

评论回复
80
9dome猫|  楼主 | 2022-5-28 20:14 | 只看该作者
34.AND:and指令在寄存器(rs1)的内容和寄存器(rs2)的内容之间执行逐位逻辑“与”运算,并存储在(rd)寄存器中。

使用特权

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

本版积分规则