指令集與組合語言

下列何者是RISC-V的C擴充(壓縮指令)的主要目的?

  1. A加入壓縮資料以減少記憶體使用量的指令
  2. B讓C語言的程式可以直接執行
  3. C將常用的指令以16位元表示,縮小程式的大小
查看答案與解析

正確答案:C. 將常用的指令以16位元表示,縮小程式的大小

C擴充是將常用的指令限定為短的形式,以16位元的指令表示。例如「addi sp, sp, -16」或小位移的lw、sw。可與32位元的指令混合使用,程式碼大小大致可縮小25~30%。程式小,就容易放進有限的快閃記憶體,也能有更多放入指令快取,所以無論對嵌入式裝置或高效能CPU都有幫助。

  • A. 不是資料的壓縮指令。
  • B. C是Compressed的意思,與C語言無關。
  • C. 正確。可將程式碼大小減少約25~30%。
練習這個領域 前往領域頁面

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

  1. 針對沒有M擴充的RV32I CPU,編譯C語言的「a * b」(int與int相乘)時,一般會變成什麼?
  2. 關於以前的MIPS等具備的分支延遲槽(branch delay slot,不論是否分支,緊接在分支指令之後的1個指令都會被執行的規定),下列何者正確?
  3. 在64位元的RV64I中執行lw指令時,讀入的32位元值是如何放入64位元暫存器的?
  4. 下列何者是對ABI(應用程式二進位介面)的正確說明?
  5. 使用C語言函式指標的呼叫「(*fp)(x)」,在RISC-V中一般是以下列哪個指令進行?