指令集與組合語言

在小端序(little-endian)的RISC-V中,以「sw」將存放0x12345678的暫存器寫入位址0x100。之後以「lbu」讀取位址0x101的1個位元組,值是多少?

  1. A0x34
  2. B0x56
  3. C0x78
查看答案與解析

正確答案:B. 0x56

在小端序中,是從值的低位位元組開始,依序放在位址較小的地方。若是0x12345678,則0x100放0x78,0x101放0x56,0x102放0x34,0x103放0x12。因此位址0x101的1個位元組是0x56。若是大端序(big-endian),則從0x100起依序為0x12、0x34……,0x101是0x34。處理網路或檔案的格式時,需要留意這項差異。

  • A. 0x34放在位址0x102。
  • B. 正確。是由低位算起第2個位元組。
  • C. 0x78放在位址0x100。
練習這個領域 前往領域頁面

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

  1. 在RISC-V中,當讀取4個位元組的lw指令的位址不是4的倍數(邊界未對齊)時,下列何者是可能發生的事?
  2. RISC-V的指令「slli t0, a0, 3」的結果,t0會是a0之值的幾倍?(不考慮溢位)
  3. a0存放int型(4位元組)陣列a的起始位址,a1存放索引i。下列何者是上述程式碼讀入a2的內容?
  4. 關於x86的「add eax, [rbx]」這種運算指令可以直接使用記憶體上的值的方式,下列何者正確?
  5. 下列何者是對現在的高效能x86 CPU在內部如何執行複雜指令的正確說明?