我对这类主题非常直率,如果我对事情完全不合适,那就很抱歉。我会尽力清楚。
在内存中读取命令时,如何知道CPU如何知道读取4字节字符串或10字节字符串以使用该命令?或者另一个命令,CPU知道它必须读取int64的大小才能正确读取数据才能使用它吗?是存放在某个地方的大小?可能计算?
答案 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];