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

[复制链接]
 楼主| 9dome猫 发表于 2022-5-28 19:57 | 显示全部楼层
汇编器执行结果如下:
3694062920e1ac5295.png
 楼主| 9dome猫 发表于 2022-5-28 19:58 | 显示全部楼层
20.SLTU:sltu指令将操作数寄存器rs1中的数值与寄存器rs2当作无符号数进行比。如果rs1中的值小于rs2中的值,则输出1,否则输出0,结果写回rd。
 楼主| 9dome猫 发表于 2022-5-28 19:58 | 显示全部楼层
如:
addi x1,x0,-1
addi x2,x0,1
sltu x3,x1,x2
 楼主| 9dome猫 发表于 2022-5-28 19:59 | 显示全部楼层
汇编器执行结果如下:
390462920e86438c0.png
 楼主| 9dome猫 发表于 2022-5-28 20:00 | 显示全部楼层
21.SLTI:slti指令将操作数寄存器rs1中的数值与12位立即数当作有符号数进行比较,如果rs1中的值小于立即数的值,则输出1,否则输出0,结果写回rd。
 楼主| 9dome猫 发表于 2022-5-28 20:01 | 显示全部楼层
如:
addi x1,x0,-1
slti x2,x1,1
汇编器执行结果如下:
2953262920f1b645b1.png
 楼主| 9dome猫 发表于 2022-5-28 20:02 | 显示全部楼层
22.SLTIU:sltiu指令将操作数寄存器rs1中的数值与12位立即数当作无符号数进行比较,如果rs1中的值小于立即数的值,则输出1,否则输出0,结果写回rd。

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

汇编器执行结果如下:
8204962920f51a8fc5.png
 楼主| 9dome猫 发表于 2022-5-28 20:04 | 显示全部楼层
23.SLL:逻辑左移(SLL)根据寄存器(rs2)中的移位量对寄存器(rs1)中的值执行逻辑左移,并存储在(rd)寄存器中。

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

汇编器执行结果如下:

3113862920fbc6817c.png
 楼主| 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

汇编器执行结果如下:

9257262920fd15360d.png
 楼主| 9dome猫 发表于 2022-5-28 20:05 | 显示全部楼层
25.SRA:算数右移(SRA)根据寄存器(rs2)中的移位量对寄存器(rs1)中的值执行算数右移,左边空出来的位补符号位,并存储在(rd)寄存器中。

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

汇编器执行结果如下:
885406292100b31a54.png
 楼主| 9dome猫 发表于 2022-5-28 20:06 | 显示全部楼层
26.SLLI:slli指令根据5位立即数的移位量对寄存器(rs1)中的值执行逻辑左移(低位补零),并存储在(rd)寄存器中。
 楼主| 9dome猫 发表于 2022-5-28 20:07 | 显示全部楼层
27.SRLI:srli指令根据5位立即数的移位量对寄存器(rs1)中的值执行逻辑右移(高位补零),并存储在(rd)寄存器中。
 楼主| 9dome猫 发表于 2022-5-28 20:08 | 显示全部楼层
28.SRAI:srai指令根据5位立即数的移位量对寄存器(rs1)中的值执行算数右移(高位补入符号位),并存储在(rd)寄存器中。
 楼主| 9dome猫 发表于 2022-5-28 20:09 | 显示全部楼层
如:
addi x2,x0,-0xf0
slli x3,x2,4
srli x4,x2,4
srai x5,x2,4

汇编器执行结果如下:
70126629210c85cefd.png
 楼主| 9dome猫 发表于 2022-5-28 20:10 | 显示全部楼层
29.ADD:add指令将寄存器(rs1)与寄存器(rs2)中的值相加,并写回(rd)寄存器中。
 楼主| 9dome猫 发表于 2022-5-28 20:10 | 显示全部楼层
30.SUB:sub指令将寄存器(rs1)与寄存器(rs2)中的值相减,并写回(rd)寄存器中。
 楼主| 9dome猫 发表于 2022-5-28 20:11 | 显示全部楼层
31.ADDI:addi指令将操作数寄存器rs1的整数值与12位立即数进行加法操作,
结果写回寄存器rd。

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

汇编器执行结果如下:
68226292116e90c26.png
 楼主| 9dome猫 发表于 2022-5-28 20:12 | 显示全部楼层
32.XOR:xor指令在寄存器(rs1)的内容和寄存器(rs2)的内容之间执行逐位逻辑“异或”运算,并存储在(rd)寄存器中。
 楼主| 9dome猫 发表于 2022-5-28 20:13 | 显示全部楼层
33.OR:or指令在寄存器(rs1)的内容和寄存器(rs2)的内容之间执行逐位逻辑“或”运算,并存储在(rd)寄存器中。
 楼主| 9dome猫 发表于 2022-5-28 20:14 | 显示全部楼层
34.AND:and指令在寄存器(rs1)的内容和寄存器(rs2)的内容之间执行逐位逻辑“与”运算,并存储在(rd)寄存器中。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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