
<指令名稱> <目的暫存器> <操作數>
add x5, x6, x7 表示將 x6 和 x7 中的值相加,結果儲存在 x5 中。add x5, x6, x7,但這並非必須。# 開頭,# 後面的內容會被忽略,類似於 Python 的註解語法。介紹了 RISC-V 中整數的加法和減法指令,並將其與 C 語言中的運算做比較:
add x1, x2, x3
x2 和 x3 中的值相加,結果存入 x1 中。a = b + c
a 對應 x1,b 對應 x2,c 對應 x3。sub x3, x4, x5
x4 中的值減去 x5 中的值,結果存入 x3 中。d = e - f
d 對應 x3,e 對應 x4,f 對應 x5。a = b + c + d - e;,需要將其分解為多個 RISC-V 指令來實現:
add x10, x1, x2  # 將 b + c 存入 x10
add x10, x10, x3 # 將之前的結果加上 d
sub x10, x10, x4 # 最後將結果減去 e
# 符號,註解部分用於說明該指令的作用。(g + h) - (i + j),會使用臨時暫存器來保存中間結果:
add x5, x20, x21  # g + h 存入 x5
add x6, x22, x23  # i + j 存入 x6
sub x19, x5, x6   # (g + h) - (i + j) 存入 x19
mv x5, x6 表示將 x6 的值設置到 x5 中。add x5, x6, x0,這條指令將 x6 的值與 x0(恆為 0)相加,並存入 x5。介紹了 RISC-V 中的 Immediates 的概念和使用方法:
addi x3, x4, 10 (在 RISC-V 中)f = g + 10
x3 和 x4 對應到 C 中的變數 f 和 g。addi ..., -X 等效於 subi ..., X,所以不需要額外的 subi 指令。addi x3, x4, -10 (在 RISC-V 中)f = g - 10
x3 和 x4 仍然對應到 C 中的變數 f 和 g。x0)x0 硬體化為固定值 0。x0 register 的硬體定義:
x0 永遠是 0,因此任何寫入 x0 的操作都會被忽略。add x3, x4, x0 將 x4 的值加上 0 並存入 x3,這等效於 C 語言中的 f = g,其中 f 對應於 x3,g 對應於 x4。x0 硬體上固定為 0,像 add x0, x3, x4 這樣的指令將不會執行任何有效操作,因為結果永遠是寫入 x0,而 x0 不會改變。