2012-08-09 103 views
1

字地址存儲器和字節地址存儲器是什麼意思?字節地址存儲器和字地址

+5

你能告訴我們你遇到這些情況的背景嗎? – cnicutar 2012-08-09 06:47:06

+0

int數組是字地址,並且char數組(假定爲8位字符)是字節地址。 – jxh 2012-08-09 06:49:57

+0

@ user315052:不是 - 這些術語與計算機體系結構有關 – 2012-08-09 10:05:59

回答

4

這通常用在底層硬件的上下文中。現在的大多數系統都有字節尋址的存儲器。也就是說,內存中的每個字節都可以單獨尋址和提取。

某些系統具有字尋址內存,指針寄存器包含單個字的地址。而且,無論何時提取內存,都會提取整個單詞。如果你需要一個特定的字節,編譯器將獲取一個字,然後安排獲取所需的字節。

請注意,在這樣的系統上,對指針使用reinterpret_cast是非常危險的,因爲實現可能(爲了效率)將指向字對齊的指針指向字指針,並將指向字節對齊的指針指向字節指針。所以,如果你的內存看起來有點像這樣:

word X : aa ab ac ed 
word X+1: ba bb bc bd 

一個指向字X包含X,而是一個字節的指針到AA將包含X * 4

reinterpret_cast<word *>(&aa)會給你X的字指針* 4這將是尷尬的錯誤。

在一個字節尋址的機器上,字和字節指針都會包含X * 4,所以它是'安全的'(也就是說未定義的行爲和混淆)在reinterpret_cast之間。

0

與湯姆同意......在字訪問內存時(在AHB總線等)訪問內存對於這種類型的內存,你可以擁有整個4個字節,如果U嘗試訪問字節,你會得到不確定的行爲