指令集與組合語言

執行完上述RISC-V程式碼時,t0的值是多少?

      li   t0, 0
      li   t1, 4
loop: add  t0, t0, t1
      addi t1, t1, -1
      bnez t1, loop
  1. A4
  2. B10
  3. C6
查看答案與解析

正確答案:B. 10

讓t1從4逐次遞減,同時將t1加到t0。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時的加法也要算進去。
練習這個領域 前往領域頁面

指令集與組合語言的其他題目

  1. RISC-V的條件分支指令(B格式)以13位元帶正負號的位元組數表示到分支目標的距離,其最低位元永遠為0,不放入指令中。下列何者大致是分支指令可直接到達的範圍?
  2. 下列何者是RISC-V指令「jal ra, func」的動作?
  3. RISC-V的虛擬指令「ret」,實際上是以下列哪一個指令執行的?
  4. 下列何者是制定呼叫慣例(calling convention)的主要目的?
  5. 在RISC-V的標準呼叫慣例中,下列何者是用於傳遞整數引數與回傳值的暫存器?