命令セット・アセンブリ
RISC-Vのauipc命令(add upper immediate to PC)の動作として正しいものはどれか。
- APCの値をそのままメモリに保存する
- B自分の番地(PC)に、20ビットの即値を12ビット左にずらした値を足してレジスタに入れる
- C即値で指定した番地へ無条件にジャンプし、PCを書き換える
答えと解説を見る
正解:B. 自分の番地(PC)に、20ビットの即値を12ビット左にずらした値を足してレジスタに入れる
auipcは「PC+(即値<<12)」をレジスタに入れるだけの命令です。続けてjalrやlwで下位12ビットのオフセットを足せば、今の位置から±2GiBほどの範囲にある関数やデータの番地を、PCからの距離で指定できます。これにより、プログラムをどこに読み込んでも動く位置独立コードで、遠くの関数を呼んだりグローバル変数を読んだりできます。
- A. メモリへの保存はしません。
- B. 正しい。PC相対の番地を作るための命令です。
- C. auipc自体はジャンプしません。