2011-12-29 58 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都将使用相同的体系结构,它们的长度将相同。

相关问题