指令集與組合語言

RISC-V的指令「slli t0, a0, 3」的結果,t0會是a0之值的幾倍?(不考慮溢位)

  1. A8倍
  2. B3倍
  3. C6倍
查看答案與解析

正確答案:A. 8倍

slli(shift left logical immediate)將暫存器的值向左移動指定的位元數,並以0填補空出的低位。在二進位中向左移1位元會變成2倍,所以3位元就是2的3次方=8倍。由於常比乘法指令更快,編譯器會將2的冪次的乘法替換為位移。在計算陣列元素的位址時也經常使用。

  • A. 正確。向左移3位元就是2的3次方倍。
  • B. 3是位移的位元數,不是倍率。
  • C. 每移1位元就變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擴充(壓縮指令)的主要目的?