RISCV
文章平均质量分 90
snsn1984
专注技术,专注管理。
展开
-
RV32I控制转移指令的偏移量计算问题
RV32I的控制转移指令可以分为无条件跳转(unconditional jumps)和条件分支(conditional branches)。其中,无条件跳转(unconditional jumps)包含JAL和JALR;条件分支(conditional branches)包含BEQ、BNE、BLT、BLTU、BGE和BGEU。这些控制转移指令会根据指令所带的立即数(imm)去计算跳转地址的偏移量,而这个偏移量的计算在这里有两种方式。第一种偏移量计算方式:实际偏移量 = 立即数(imm)* 2除了JA原创 2021-06-03 10:25:07 · 2433 阅读 · 0 评论 -
RV32G下lui/auipc和addi结合加载立即数时的补值问题
一、问题描述与解决思路在32位下,lui/auipc通常用来取一个32位数的高20位,并且是带符号操作,将最高位默认为符号位。那么,取完最高位20位之后,再取低12位的时候,会面临一个补值问题。假设这个32位内容为正数,lui/auipc取高20位的时候本身没问题,但是后续再对剩余的12位数字进行操作的时候,如果第11位是1,那么这一位会被当成是符号位,就将一个12位的正数变成了一个11位的负数。这种情况之下,lui/aupic和addi的合并操作的计算结果就不对了,就变成了高20位减去了一个低11原创 2021-06-03 10:23:10 · 1639 阅读 · 0 评论