命令セット・アセンブリ

アセンブリ言語と機械語の関係として正しいものはどれか。

  1. Aアセンブリの命令は、アセンブラによってほぼ1対1で機械語の命令に変換される
  2. BアセンブリはCPUの種類によらず共通で、どのCPUでもそのまま動く
  3. C機械語はアセンブリを実行時に1行ずつ解釈するインタプリタである
答えと解説を見る

正解:A. アセンブリの命令は、アセンブラによってほぼ1対1で機械語の命令に変換される

アセンブリ言語は、機械語の命令を「add a0, a0, a1」のような人が読める記号(ニーモニック)で書いたもので、アセンブラが命令のビット列に変換します。命令とほぼ1対1に対応するので、ISAが違えばアセンブリも違います。ただし「li」や「mv」のような疑似命令は、アセンブラが1つ以上の本物の命令に置き換えます。ラベルを番地に直すのもアセンブラの仕事です。

  • A. 正しい。命令を人が読める記号で書いたものです。
  • B. アセンブリはISAごとに違います。
  • C. 機械語はCPUが直接実行するビット列です。
この分野を解く 分野ページへ

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

  1. RISC-Vの疑似命令「nop」(何もしない)は、アセンブラによって実際にはどの命令に置き換えられるか。
  2. RISC-Vの「add」命令と「addi」命令の違いとして正しいものはどれか。
  3. 上のRISC-Vのコードを実行した後、レジスタa2の値はいくらか。
  4. RISC-Vの命令「lw t0, 8(sp)」の動作として正しいものはどれか。
  5. RISC-Vの条件分岐命令「beq a0, a1, label」で、分岐先labelの番地はどのように表されているか。