RISC-V指令集介紹 - 整數基本指令集


1. 寄存器

32個x寄存器,RV32下x reg是32位寬

x0:硬連線 常數0 專門的零寄存器

x1-x31:31個通用reg

返回地址:沒有強制要求那一個x作為lr,但是一般用x1

pc:額外的用戶可見寄存器

 

2. 基本指令格式

四種基礎指令格式 R/I/S/U

imm:立即數

rs1:源寄存器1

rs2:源寄存器2

rd:目標寄存器

opcode:操作碼

example: C.LI 指令被擴展為 addi rd, x0, imm[5:0]。 

 

3 整形運算

使用R或者I類指令

R類:寄存器-立即數

I類:寄存器-寄存器

整數計算不會造成運算異常

 

寄存器-立即數:

ADDI:將12位有符號立即數和rs相加,溢出忽略,直接使用結果的最低32bit,並存入rd

偽指令MV:"MV rd,rs"實際上是"ADDI rd, rs, 0"

SLTI:如果rs小於立即數(都是有符號整數),將rd置1,否則置0

SLTIU:和SLTI一致,不過都是無符號數

偽指令SEQZ:"SEQZ rd, rs" 實際上是 "SLTIU rd, rs1, 1"

ANDI/ORI/XORI:rs與有符號12位立即數進行and,or,xor操作

偽指令NOT:"NOT rd, rs"實際上是"XORI rd, rs1, -1"

 

shift是I類指令格式

SLLI:邏輯左移,低位移入0

SRLI:邏輯右移,高位移入0

SRAI:算數右移,符號移入高位

 

u類指令格式

LUI:創建32位無符號整數,存放立即數到rd的高20位,低12位置0

AUIPC:創建pc的相對地址,pc+無符號立即數(偏移量)=>rd

 

寄存器-寄存器:

ADD/SUB:rs1(+/-)rs2 => rd

SLT/SLTU: 如果rs1<rs2,rd寫1; 否則rd為0

AND/OR/XOR: rs1與rs2進行and,or,xor操作

SLL/SRL/SRA: 和"寄存器-立即數"指令一致,將r2的低5位作為立即數即可

 

NOP指令:

實際上是ADDI x0,x0,0

 

4. 控制傳輸指令

1)非條件跳轉: 

JAL:J類指令,立即數+pc為跳轉目標,rd存放pc+4(返回地址)

跳轉范圍為pc(+/-)1MB

JALR:I類指令,rs+立即數為跳轉目標,rd存放pc+4(返回地址)

實現遠跳轉

 

2)條件跳轉

所有分支指令使用B類指令格式,12位立即數+pc作為目標

跳轉范圍為pc(+/-)4KB

 

BEQ/BNE:rs1(==/!=)rs2, 分別在相等或者不等時,發生跳轉

BLT:rs1 < rs2, 跳轉

BGE:rs1 >= rs2, 跳轉

 

5 加載存儲指令

 

RV32I是一個加載/存儲架構,只有load/store能訪問內存,運算指令只操作寄存器

load是I類指令,store是S類指令

 

LOAD:rs作為基地址,加上有符號的偏移,讀取到rd寄存器

STORE:rs1作為基地址加上有符號的偏移,作為內存地址,寫入內容為rs2

 

6. 控制狀態寄存器指令

寄存器-寄存器:讀/寫/修改 CSR

CSRRW:Atomic Read/Write CSR

讀取CSR的值存入rd寄存器,並將rs存入CSR

另外:如果rd為x0,將不會執行

 

CSRRS:Atomic Read and Set Bits in CSR

讀取CSR的值存入rd寄存器,並根據rs中高位對CSR置1

另外:如果rs為x0,將不會執行

 

CSRRC:Atomic Read and Clear Bits in CSR

讀取CSR的值存入rd寄存器,並根據rs中高位對CSR置0

另外:如果rs為x0,將不會執行

 

立即數-寄存器:讀/寫/修改 CSR

CSRRWI/CSRRSI/CSRRCI

將CSRRW類寄存器中的rs換成立即數

另外:如果立即數為0,將不會執行

 

用戶級系統指令:時鍾和計數器

RV32I提供三個64位只讀用戶級寄存器:RDCYCLE[H]/RDTIME[H]/RDINSTRET[H]

使用CSRRS讀取這三個寄存器的高32 bit

 

RDCYCLE:時鍾周期計數

RDTIME:時間 tick數

RDINSTRET:指令數

參考文檔: https://blog.csdn.net/zhangshuaiisme/article/details/80718496


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM