指令集與組合語言

關於x86的「add eax, [rbx]」這種運算指令可以直接使用記憶體上的值的方式,下列何者正確?

  1. A指令數可以減少,但一個指令中包含了記憶體的讀取與運算
  2. B是稱為載入/儲存架構的方式
  3. C使用記憶體的值的運算,必定與暫存器之間的運算花費相同的時間
查看答案與解析

正確答案:A. 指令數可以減少,但一個指令中包含了記憶體的讀取與運算

在x86中,一個指令就能「從記憶體讀取並相加」,同樣的處理在RISC-V中寫成lw與add兩個指令。雖然指令數與程式碼容易變小,但每個指令的工作量參差不齊,不易以管線處理。因此現在的x86 CPU,會在內部將這類指令拆分為載入與加法這樣的單純操作(微運算,micro-operation)來執行。

  • A. 正確。是CISC的特徵之一。
  • B. 載入/儲存方式是將記憶體與運算分開的方式。
  • C. 因為多了記憶體讀取,所以會花費較多時間。
練習這個領域 前往領域頁面

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

  1. 下列何者是對現在的高效能x86 CPU在內部如何執行複雜指令的正確說明?
  2. 下列何者是RISC-V的M擴充加到基本整數指令集的指令?
  3. 下列何者是RISC-V的C擴充(壓縮指令)的主要目的?
  4. 針對沒有M擴充的RV32I CPU,編譯C語言的「a * b」(int與int相乘)時,一般會變成什麼?
  5. 關於以前的MIPS等具備的分支延遲槽(branch delay slot,不論是否分支,緊接在分支指令之後的1個指令都會被執行的規定),下列何者正確?