2010-04-12 96 views
2

我在MIPS MARS simulator上運行以下代碼片段。那個模擬器是小端的。所以,結果如下:MIPS程序集:大,小端混淆

lui $t0,0x1DE    # $t0 = 0x01DE0000 
ori $t0,$t0,0xCADE  # $t0 = 0x01DECADE 
lui $t1,0x1001   # $t1 = 0x10010000 
sw  $t0,200($t1)   # $t1 + 200 bytes = 0x01DECADE 
lw  $t2,200($t1)   # $t2 = 0x01DECADE 

因此,對小端MIPS模擬器的$ T2在程序結束時的值是0x01DECADE。如果這個模擬器是大端的,那麼值是多少?它會是0xDECADE01還是仍然是0x01DECADE?

回答

6

它是一樣的 - 內存中字節的順序是不同的,但是你只會看到如果你從200($ t1),201($ t1),202($ t1 )和203($ t1)

+0

謝謝克里斯。這就說得通了。如果有人能夠在大型機器上運行SPIM來驗證,那將會很好。 – Barney 2010-04-12 19:49:00

+1

@Barney:無需驗證。這是標準的字節順序。商店的行爲取決於字節順序,負載完全與負載相反。一個接一個地執行它們,具有相同的數據大小,不會改變寄存器值。 – Bahbar 2010-04-12 21:04:33

+0

@Bahbar:謝謝。 「負載完全與負載相反。」你的意思是「裝載與商店完全相反」嗎? – Barney 2010-04-12 23:05:22