命令セット・アセンブリ

RISC-Vのレジスタx0(zero)の性質として正しいものはどれか。

  1. A読むと常に0で、書き込んでも値は変わらない
  2. B関数の戻り先のアドレスを保持する
  3. C直前の演算の結果が0だったかどうかを示すフラグになる
答えと解説を見る

正解:A. 読むと常に0で、書き込んでも値は変わらない

x0は常に0を返す特別なレジスタで、書き込みは無視されます。0という定数がいつでも使えるので、「add rd, rs, x0」で値のコピー、「addi rd, x0, 5」で定数の設定、結果を捨てたいときは書き込み先をx0にする、といった使い方ができ、専用の命令を増やさずに済みます。戻り先アドレスはx1(ra)に入ります。RISC-Vは演算結果のフラグを持たず、分岐命令が2つのレジスタを直接比べます。

  • A. 正しい。常に0の定数レジスタです。
  • B. 戻り先アドレスはx1(ra)に入ります。
  • C. RISC-Vには結果のフラグを持つレジスタはありません。
この分野を解く 分野ページへ

命令セット・アセンブリのほかの問題

  1. RISC-VのRV32I(32ビットの基本整数命令セット)が持つ汎用の整数レジスタとして正しいものはどれか。
  2. アセンブリ言語と機械語の関係として正しいものはどれか。
  3. RISC-Vの疑似命令「nop」(何もしない)は、アセンブラによって実際にはどの命令に置き換えられるか。
  4. RISC-Vの「add」命令と「addi」命令の違いとして正しいものはどれか。
  5. 上のRISC-Vのコードを実行した後、レジスタa2の値はいくらか。