命令セット・アセンブリ

RISC-Vの命令「slt t0, a0, a1」の動作として正しいものはどれか。

  1. Aa0をa1ビットだけ左にずらしてt0に入れる
  2. Ba0がa1より小さければ、t0の番地へ分岐する
  3. Ca0がa1より小さければt0に1を、そうでなければ0を入れる
答えと解説を見る

正解:C. a0がa1より小さければt0に1を、そうでなければ0を入れる

slt(set less than)は、2つのレジスタを符号付き整数として比べ、小さければ1、そうでなければ0を書き込みます。符号なしで比べるsltu、即値と比べるsltiもあります。C言語の「x = (a < b);」のように比較の結果を値として使うときや、分岐をなくして条件を計算で表すときに使われます。シフトはsll、分岐はbltなどの別の命令です。

  • A. 左シフトはsll命令です。
  • B. sltは分岐しません。
  • C. 正しい。set less thanの略です。
この分野を解く 分野ページへ

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

  1. 上のRISC-Vのコードを実行し終えたとき、t0の値はいくらか。
  2. RISC-Vの条件分岐命令(B形式)は、分岐先までの距離を13ビットの符号付きのバイト数で表し、その最下位ビットは常に0として命令に入れない。分岐命令が直接届く範囲としておよそ正しいものはどれか。
  3. RISC-Vの命令「jal ra, func」の動作として正しいものはどれか。
  4. RISC-Vの疑似命令「ret」は、実際にはどの命令として実行されるか。
  5. 呼び出し規約(コーリングコンベンション)が決められている主な目的はどれか。