CPU如何知道变量的大小以正确读取它?

时间:2011-12-29 15:29:10

标签: assembly size byte cpu

我对这类主题非常直率,如果我对事情完全不合适,那就很抱歉。我会尽力清楚。

在内存中读取命令时,如何知道CPU如何知道读取4字节字符串或10字节字符串以使用该命令?或者另一个命令,CPU知道它必须读取int64的大小才能正确读取数据才能使用它吗?是存放在某个地方的大小?可能计算?

3 个答案:

答案 0 :(得分: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 :(得分:2)

让我们看看字符串以获得对此的部分答案,在C中,必须对一个字符串进行空终止(即以空字节或\0结束)因此它&# 39;读取空字节的简单工作。

在固定类型的数据上(让我们说int)然后编译器会通知CPU它正在处理一个int,因为编译器和CPU都将使用相同的架构,他们的int s长度相同。

答案 2 :(得分:-1)

你必须告诉“他”你的数据长度。

这就是你需要分配内存的原因,例如

char test[17];