亲爱的RISCV爱好者们,
我的问题是关于编码
li t1, 0xFF00F007
当使用https://riscvasm.lucasteske.dev/#时,上面的代码编码为
0: 000ff337 lui t1,0xff
4: 00f3031b addiw t1,t1,15
8: 00c31313 slli t1,t1,0xc
c: 00730313 addi t1,t1,7 # ff007 <_sstack+0xee607>
在我幼稚地尝试编码指令时,我想出了
[0] lui sp, 0xFF00F # --pseudo--> I_LI -> FF00F137
[4] addiw t1, sp, 0x7 # --pseudo--> I_LI -> 0071031B
我肯定遗漏了一些东西。
我的问题是:
1. 我的尝试正确吗?
2. 如果正确,为什么https://riscvasm.lucasteske.dev/#会
输出 4 条指令而不是 2 条指令? 似乎 4 条指令的性能不如 2 条指令。
感谢您的意见。
我在 RISCV 解释器https://www.cs.cornell.edu/courses/cs3410/2019sp/riscv/interpreter/中尝试了我自己的代码 ,似乎正确的立即数最终出现在寄存器中。
所以我不知道我做错了什么。