2015-10-09 58 views
-1

我目前正在使用計算機系統,並且不知道發生了什麼。我在作業中有這樣一個問題:Little和Big Endian值

在字節可尋址系統中,字節序列從地址0x10010000 0x23, 0x1a, 0x25, 0xaf, 0xef, 0xa5, 0x5a, 0x61, 0x6f, 0x73開始。如果系統使用48位寄存器並支持加載加載命令'ld48bit <rt>, <address>'從內存加載48位信息。在以下情況下,'ld48bit $t0, 0x10010002'後面的t0的內容是什麼?

  1. 系統使用大端約定。
  2. 系統使用小尾數約定。

這是否意味着我們將0x10010002的值加載到$t0中,但我們將其更改爲48位而不是8位?那麼我們在使用big endian時按降序排列t0的值,在使用little endian時按升序排列?我真的不確定如何首先解決這個問題。任何幫助,將不勝感激。謝謝!

回答

1

您有10個字節的數組 - 80位。處理器可以加載6個字節 - 48位。但它被要求閱讀(地址+2)。這意味着您列出的前2個字節和最後2個字節將被忽略。

在大端存儲器的情況下,遇到的第一個字節是最重要的,所以數據寄存器將「出現」以按照您呈現的相同順序保存字節。

0x25afefa55a61 

在小端存儲器存儲的情況下,所遇到的第一個字節是至少顯著,因此讀入到寄存器中的字節順序將顛倒過來。

0x615aa5efaf25 

人類通常使用大端描述格式,例如在1000最顯著的數字是第一。

+0

謝謝!但我不明白爲什麼我們不得不忽略前兩位數字。 – Riadiani

+0

@Riadiani,因爲問題是*「字節序列從地址0x10010000開始*」,但是繼續給出指令「ld48bit $ t0,0x10010002」,它比數組基址大2個字節。 –

相關問題