簡體   English   中英

如何將立即數加載到 RV32I 基本指令集中的寄存器中?

[英]How to load an immediate number to a register in RV32I Base Instruction Set?

最近在研究RV32I基本指令集,沒有發現像LD r1,imm的指令。 因此,我想知道匯編程序員如何將立即數加載到 RV32I 系統中的寄存器中? 謝謝。

為此,程序員可以使用 ADDI r1、r0、imm。 由於 r0 是一個常數 0,所以這條指令將 imm 移動到寄存器 r1。

不知道RV32的設計者是不是這樣想的,用ADDI代替LD r1,嗯?

希望任何人都可以對此有所了解。 謝謝。

有一個 li(立即加載)別名或偽指令也提供您所指的功能。

以下示例顯示了用於加載立即數的 li 偽指令:.section .text .globl _start _start:

 .equ CONSTANT, 0xcafebabe li a0, CONSTANT

它生成以下匯編器輸出,如 objdump 所見:

 0000000000000000 <_start>: 0: 00032537 lui a0,0x32 4: bfb50513 addi a0,a0,-1029 8: 00e51513 slli a0,a0,0xe c: abe50513 addi a0,a0,-1346

這個片段來自這個 github markdown,它是在 riscv 程序集中編程時的一個很好的參考。 https://github.com/riscv/riscv-asm-manual/blob/master/riscv-asm.md#load-immediate

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM