li指令 汇编_RISC-V平台的汇编指令解析
csrr? ? a0, 0xF14 //把0xF14的值讀入到a0中
andi? ? a1, a0, 0x1f //把a(bǔ)0 和0x1F按位與運(yùn)算后存儲到a1中
srli? ? a0, a0, 5 //將高位移動到低位,覆蓋a0 (SLLI是邏輯左移(0被移入低位); SRLI是邏輯右移(0被移入高位);SRAI是算術(shù)右移(原來的符號位被復(fù)制到空出的高位中))
li? ? ? a2, ARCHI_FC_CID//將ARCHI_FC_CID的低6位取出寫入到a2中 (C.LI 指令將符號擴(kuò)展的 6 位立即數(shù) imm,寫入寄存器 rd 中)
la? ? ? t1, _start? //加載地址,把_strart加載到系統(tǒng)中 (la rd, symbol :? ? ? ? ??auipc rd, symbol[31:12] addi rd, rd, symbol[11:0])
sw? ? ? t1, 0x80(t2)? //C.SW 指令將寄存器 rs2’中的 32 位值保存到存儲器中。其有效地址的計算是通過將 零 擴(kuò)展的偏移量×4,然后加上寄存器 rs1’中的基址形成的。它被擴(kuò)展為 sw rs2’, offset[6:2](rs1’)指令.
bltu? ? t0, t1, 1b //如果無符號的t0小于無符號的t1,則跳轉(zhuǎn)到1b (BLT和BLTU?將跳轉(zhuǎn),如果rs1小于rs2,分別使用有符號數(shù)和無符號數(shù)進(jìn)行比較。BGE和BGEU將跳轉(zhuǎn),如果rs1大于等于rs2,分別使用有符號數(shù)和無符號數(shù)進(jìn)行比較。注意,BGT、BGTU、BLE和BLEU可以通過將BLT、BLTU、BGE、BGEU的操作數(shù)對調(diào)來實現(xiàn))
jalr? x1, t2 //C.JALR(jump and link register)指令執(zhí)行與 C.JR 指令相同的操作,但是它還將在跳轉(zhuǎn)指?令后的指令地址(pc+2)寫入到鏈接寄存器 x1 中。C.JALR 指令被擴(kuò)展為 jalr x1, rs1, 0。
lw? x10, 0(x10) //C.LW 指令將一個 32 位數(shù)值從存儲器讀入寄存器 rd’中。其有效地址的計算是通過將 零擴(kuò)展的偏移量×4,然后加上寄存器 rs1’中的基址形成的。它被擴(kuò)展為 lw rd’, offset[6:2](rs1’)指令。
slli? ? ?x9, x9, 2? //C.SLLI 指令是一條 CI 格式的指令,它對寄存器 rd 中的數(shù)值進(jìn)行邏輯左移操作,并將結(jié)果寫入 rd。
總結(jié)
以上是生活随笔為你收集整理的li指令 汇编_RISC-V平台的汇编指令解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何做网课才可以更好地变现?
- 下一篇: Python实现一个小小的图片播放器,就