命令セット・アセンブリ

RISC-Vの命令「slli t0, a0, 3」の結果t0は、a0の値の何倍になるか(あふれは考えない)。

  1. A8倍
  2. B3倍
  3. C6倍
答えと解説を見る

正解:A. 8倍

slli(shift left logical immediate)は、レジスタの値を左に指定したビット数だけずらし、空いた下位を0で埋めます。2進数では1ビット左にずらすと2倍になるので、3ビットなら2の3乗=8倍です。掛け算の命令より速いことが多いので、コンパイラは2のべき乗の掛け算をシフトに置き換えます。配列の要素の番地を計算するときにもよく使われます。

  • A. 正しい。左に3ビットずらすと2の3乗倍です。
  • B. 3はずらすビット数で、倍率ではありません。
  • C. ずらすたびに2倍になるので、掛け算で考えます。
この分野を解く 分野ページへ

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

  1. a0にint型(4バイト)の配列aの先頭番地、a1に添字iが入っている。上のコードがa2に読み込むものとして正しいものはどれか。
  2. x86の命令「add eax, [rbx]」のように、演算命令がメモリ上の値を直接使える方式について正しいものはどれか。
  3. 現在の高性能なx86のCPUが、複雑な命令を内部でどのように実行しているかの説明として正しいものはどれか。
  4. RISC-VのM拡張が基本の整数命令セットに追加する命令はどれか。
  5. RISC-VのC拡張(圧縮命令)の主な目的はどれか。