C如何在内存中存储不同的数据类型?

时间:2016-05-13 02:12:35

标签: c memory assembly

我正在学习汇编(对于MIPS),我知道每次内存调用都会带来32位字。我也知道在C中有一些数据类型不需要32位。例如,char只需要8位内存和一个int 16位。所以我的问题是C中的char是否在内存中使用32位?还是只有8位?如果CPU只从内存加载一个只有8位的地址,那么加入一个字符的地址就不会收到一个32位的字?我对此有点困惑,因为我总是被告知所有内容都存储为内存中的32位字。

一方面有意义将字符存储在8位块上,以节省空间。

1 个答案:

答案 0 :(得分:2)

你被误导了。 MIPS是一个字节可寻址的CPU,因此每个存储器的“单元”只保存8位。每次读取(或写入)指令一次可以访问1,2或4个字节以访问8位,16位或32位(在MIPS32上 - 使用MIPS64,您还可以在单​​次读取中访问8个字节/ 64位或写)。