2016-05-13 118 views
-1

我正在學習彙編(MIPS),我知道每個內存調用都會帶來一個32位字。我也知道在C中有一些數據類型不需要32位。例如,char只需要8位內存和一個int 16位。所以我的問題是C中的字符在內存中使用32位?還是隻有8位?如果CPU從內存中加載的地址只有8位,那麼它將不會收到一個32位的字?我對此有點困惑,因爲我總是被告知所有內容都被存儲爲32位字。C如何在內存中存儲不同的數據類型?

對於一邊有意義的存儲8位塊的字符,以節省空間。

+0

「我正在學習彙編(針對MIPS),我知道每個內存調用都會帶來一個32位字。」 - 不,不。 MIPS具有8位的lb和sb,16位的lh和sh。 – immibis

回答

2

你被誤導了。 MIPS是一個字節可尋址的CPU,所以每個「存儲單元」只能存儲8位數據。每個讀(或寫)指令一次可以訪問1,2或4個字節,以訪問8,16或32位(在MIPS32上 - 使用MIPS64,您也可以在一次讀取中訪問8個字節/ 64位或寫)。