RISC

您所在的位置:网站首页 add是什么指令类型的文件 RISC

RISC

2024-07-14 11:07| 来源: 网络整理| 查看: 265

1. R-Type整数寄存器-寄存器指令

上文RISC-V指令集讲解(3)I-Type 移位指令和U-type指令介绍完了整数寄存器-立即数指令,本文开始进行整数寄存器-寄存器指令的讲解。

RV32I定义了几种算术R-type运算。 所有操作都将rs1和rs2寄存器作为源操作数读取,并将结果写入寄存器rd,注意R-type指令没有立即数,只有寄存器rs1,rs2和rd。

funct7和funct3字段选择操作类型,如图1所示。

R-type一共有10条指令,opcode名称为OP,值为011_0011(所有的R-type指令的opcode都相同)。

图1 整数寄存器-寄存器指令机器编码格式 [1]

1.1. ADD

ADD指令与RISC-V指令集讲解(2)I-Type整数寄存器-立即数指令中提到的ADDI指令的操作原理类似,唯一区别是原本是12位立即数的位置,拆分为了7位的funct7和5位的rs2。

ADD指令格式为ADD rd,rs1,rs2。x[rd] = x[rs1] + x[rs2]

如图2所示,ADD指令的funct7为000_0000,funct3为000。该指令是将rs1 + rs2的结果写入rd中。注意:不是由机器码位置的bit 15-19和bit 20-24相加,而是索引号对应的寄存器的值相加。

与ADDI类似,溢出的部分忽略(溢出处理可以由软件实现,这里介绍如何处理),只将低XLEN位写入rd。

加法溢出的举例为,两个8位二进制有符号数相加,0100_0000(64) + 0111_0000(112) = 1011_0000(-80),结果明显是错误的。

指令示例:

ADD x14,x12,x13

将x12和x13寄存器中的数相加,并将结果放入x14寄存器中。

OP-IMM为011_0011

funct3为000

funct7为7’b000_0000

rs2为5’b0_1101

rs1为 5’b0_1100

rd为 5’b0_1110

所以ADD x14,x12,x13 对应的机器码为0000000_01101_01100_000_01110_0110011,对应的16进制为32’h00d6_0733

图2 ADD机器编码格式 [2]

1.2. SLT

同样,SLT与SLTI类似,SLT指令格式为SLT rd,rs1,rs2。x[rd] = x[rs1] 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3