2011-12-29 59 views
1

嗯,我對這種類型的主題很生硬,所以很抱歉,如果我完全不符合事情。我會盡力澄清。CPU如何知道變量的大小以正確讀取它?

在正在讀取命令的內存中,CPU如何知道它必須讀取一個4字節的字符串或一個10字節的字符串來處理該命令?或另一個命令,CPU知道它必須讀取int64的大小才能正確讀取數據以使用它?是存儲在某個地方的大小?可能計算?

+1

編譯器生成能夠正確讀取變量的代碼。 – 2011-12-29 15:30:25

+0

感謝所有 - 在谷歌搜索一段時間後,這一切都變得枯燥!謝謝! – 2012-12-02 15:25:58

回答

3

數據大小通常是在指令中編碼,或者是隱式知道的。在例如x87中:

fild word [testdata] ; loads 16 bits 

fld  dword [testdata] ; loads 32 bits 
fld  qword [testdata] ; loads 64 bits 
fld  tword [testdata] ; loads 80 bits 
-1

你必須告訴他「你」你的數據長度。

它是你需要分配內存的原因,例如

char test[17]; 
2

讓我們來看看字符串的部分答案,這在C一個具有空字符結束一個人的字符串(即以空字節或\0結束它),因此它的讀取到空一個簡單的工作字節。

對於固定類型的數據(假設爲int),編譯器會通知CPU它正在處理一個int,因爲編譯器和CPU都將使用相同的體系結構,它們的長度將相同。

相關問題