RISC-V命令リスト

RISC -V命令セットとは、RISC-V互換マイクロプロセッサがサポートする命令セットを指します。これらの命令は通常、実行可能プログラムの一部であり、多くの場合、コンピュータファイルとして保存され、プロセッサ上で実行されます。

RISC-V 整数命令

以下の表はRV整数命令の一覧です。[ 1 ]整数命令セットはISAのベースI部分に分かれており、32ビットRV32版と64ビットRV64版、そしてM、B、Zicond拡張版が用意されています。また、アトミック命令用のA拡張版と、浮動小数点演算用のFおよびD命令も用意されています。

RV 整数(擬似)命令
命令名前形式拡大RV64
ポンドバイトをロードrd、imm12(rs)
半分をロードrd、imm12(rs)
単語を読み込むrd、imm12(rs)
ldダブルロードrd、imm12(rs)×
lbuロードバイト(U)rd、imm12(rs)
ルフ半分をロード(U)rd、imm12(rs)
lwuワードをロード (U)rd、imm12(rs)×
sbストアバイトrs1、imm12(rs2)
シュストアハーフrs1、imm12(rs2)
swストアワードrs1、imm12(rs2)
sdストアダブルrs1、imm12(rs2)×
即時ロードrd、imm[注1 ]
ルイ上位即値をロードrd、imm20
auipcプログラムカウンタに上位即値を加算するrd、imm20
動画動くrd、rs[注2 ]
セクストb符号拡張最下位バイトを移動rd、rsB
セクスト.h移動符号拡張最下位半分rd、rsB
セクストw移動符号拡張最下位ワードrd、rs[注2 ]×
ゼクストbゼロを移動 ​​EXTEND 最下位バイトrd、rs[注2 ]
zext.hゼロを移動 ​​EXTEND 最下位半分rd、rsB
ゼクストゼロを移動 ​​EXTEND 最下位ワードrd、rsB [注2 ]×
rev8逆バイト順で移動するrd、rsB
czero.eqzゼロ条件付きゼロまたは移動rd、rs1、rs2ジコンド
czero.nezゼロと等しくない条件付きゼロまたは移動rd、rs1、rs2ジコンド
アディ即時追加rd、rs、imm12
追加追加rd、rs1、rs2
sh1addシフト1 追加rd、rs1、rs2B
sh2addシフト2 追加rd、rs1、rs2B
sh3addシフト3 追加rd、rs1、rs2B
追加.wu単語の追加(Uを2倍にする)rd、rs1、rs2B×
sh1add.wuSHift1 Word(U in double) 倍精度加算rd、rs1、rs2B×
sh2add.wuSHift2 Word(U in double) 倍精度加算rd、rs1、rs2B×
sh3add.wuSHift3 Word(U in double) 倍精度加算rd、rs1、rs2B×
アディウ単語を単語に即時追加rd、rs、imm12×
追加単語を追加rd、rs1、rs2×
サブ減算rd、rs1、rs2
サブw単語の減算rd、rs1、rs2×
否定的ネガティブ。rd、rs[注2 ]
ネガティブ否定語rd、rs[注2 ]×
マルマルチプライrd、rs1、rs2M
マルウ単語の掛け算rd、rs1、rs2M×
マルチ高い部分を乗算するrd、rs1、rs2M
ムルフ上位部分を符号なし乗算するrd、rs1、rs2M
ムルス上位部分を符号なしと符号付きの乗算rd、rs1、rs2M
分割分けるrd、rs1、rs2M
divu割り算(U)rd、rs1、rs2M
レム残りrd、rs1、rs2M
レム残り(U)rd、rs1、rs2M
最小rd、rs1、rs2B
最大最大rd、rs1、rs2B
マイナス最小値(U)rd、rs1、rs2B
マクシュマキシマム(U)rd、rs1、rs2B
シーケンスEQual to Zeroのときにビットを設定するrd、rs[注2 ]
くしゃみゼロと等しくない場合にビットを設定するrd、rs[注2 ]
slti即値未満の場合にビットを設定するrd、rs、imm12
sltより小さい場合にビットを設定するrd、rs1、rs2
sltiu即値未満の場合にビットを設定する(U)rd、rs、imm12
sltuより小さい場合にビットを設定する (U)rd、rs1、rs2
ベクスティビット抽出即時rd、rs、imm5/6B
次へビット抽出rd、rs1、rs2B
アンディそして即時rd、rs、imm12
そしてそしてrd、rs1、rs2
そしてそして、そうではないrd、rs1、rs2B
bclriビットCLeaR即時rd、rs、imm5/6B
bclrビットクリアrd、rs1、rs2B
オリまたは即時rd、rs、imm12
またはまたはrd、rs1、rs2
オーンか否かrd、rs1、rs2B
ブセティビットSET即時rd、rs、imm5/6B
bsetビットセットrd、rs1、rs2B
ゾリ排他的論理和即時rd、rs、imm12
xor排他的論理和rd、rs1、rs2
xnorXORではないrd、rs1、rs2B
ビンビビット反転即時rd、rs、imm5/6B
ビンヴビット反転rd、rs1、rs2B
ないないrd、rs[注2 ]
オーク.bまたはバイト内で結合rd、rsB
スリ論理即値左シフトrd、rs、imm5/6
sll左シフト論理rd、rs1、rs2
ゆっくりと論理ワードの左シフト(即値)rd、rs、imm5×
sllw論理ワードを左にシフトrd、rs1、rs2×
slli.wu論理ワードの左シフト(doubleのU)即値rd、rs、imm5/6×
srli右シフト論理即値rd、rs、imm5/6
srl右シフト論理rd、rs1、rs2
srliw論理ワードの右シフト即値rd、rs、imm5×
srlw論理ワードを右にシフトrd、rs1、rs2×
スライ右シフト算術即値rd、rs、imm5/6
スラ右シフト演算rd、rs1、rs2
スライウ右シフト算術ワード即値rd、rs、imm5×
生の算術ワードの右シフトrd、rs1、rs2×
ロリ右に即時回転rd、rs、imm5/6B
ロー右回転rd、rs1、rs2B
ロール左に回転rd、rs1、rs2B
ロリウ右回転(即時単語)rd、rs、imm5B×
ロウ単語を右に回転rd、rs1、rs2B×
ロール単語を左に回転rd、rs1、rs2B×
クルズ先頭のゼロを数えるrd、rsB
クリズWordの先頭のゼロを数えるrd、rsB×
ctz末尾のゼロを数えるrd、rsB
ctzwWordで末尾のゼロを数えるrd、rsB×
cポップ1の人口を数えるrd、rsB
cpopwWordで1の個数を数えるrd、rsB×
jジャンプラベル[注2 ]
JALジャンプアンドリンクrd、imm20
ジュニアジャンプレジスタrs [, imm12][注2 ]
ジャールジャンプアンドリンク登録rd rs [, imm12]
電話電話シンボル[注3 ]
しっぽTAILコールシンボル[注4 ]
ret戻る-[注5 ]
ベックブランチ ==rs1、rs2、ラベル
bneブランチ !=rs1、rs2、ラベル
bltブランチ <rs1、rs2、ラベル
bgt支店 >rs1、rs2、ラベル[注2 ]
bgeブランチ >=rs1、rs2、ラベル
bleブランチ <=rs1、rs2、ラベル[注2 ]
bltuブランチ < (U)rs1、rs2、ラベル
bgtuブランチ > (U)rs1、rs2、ラベル[注2 ]
bgeuブランチ >= (U)rs1、rs2、ラベル
ブルーブランチ <= (U)rs1、rs2、ラベル[注2 ]
いいえ操作なし-
呼び出し環境コール-
ブレーク環境ブレイク-

備考

  1. ^アセンブラマクロ、12ビット未満の即値が必要な場合は、addi rd zero imm に展開されます。
  2. ^ a b c d e f g h i j k l m n o疑似命令。単一命令に展開されます。
  3. ^アセンブラマクロ ra を上書きする。ローダーシンボルの再配置と相互作用する。jal ra, imm または auipc ra, imm; jalr ra, ra imm の組み合わせに展開される。
  4. ^アセンブラマクロ。t1 を上書きする可能性があります。ローダーシンボルの再配置と相互作用します。jal zero imm または auipc t1, imm; jalr zero t1, imm の組み合わせに展開されます。
  5. ^ raを上書きする擬似命令。jal zero, ra, 0に展開される。

参照

参考文献

  1. ^ 「RISC-V命令セットマニュアル 第1巻」(PDF) . RISC-V. 2024年4月11日. 2025年2月4日閲覧