命令セット・アセンブリ
上のRISC-Vのコードを実行し終えたとき、t0の値はいくらか。
li t0, 0
li t1, 4
loop: add t0, t0, t1
addi t1, t1, -1
bnez t1, loop
- A4
- B10
- C6
答えと解説を見る
正解:B. 10
t1を4から1つずつ減らしながら、t0にt1を足していきます。t0は4、7、9、10と増え、t1が0になったところでbnez(0でなければ分岐)が分岐しなくなり、ループを抜けます。結果は4+3+2+1=10です。bnezは「bne t1, zero, loop」の疑似命令です。カウンタを減らして0と比べる形は、比較用の定数が要らないのでよく使われます。
- A. ループは1回では終わりません。
- B. 正しい。4+3+2+1=10です。
- C. t1=1のときの加算も含めます。