【发布时间】:2016-05-13 02:12:34
【问题描述】:
我正在学习汇编(用于 MIPS),我知道每个内存调用都会带来一个 32 位字。我也知道在 C 中有些数据类型不需要 32 位。例如,一个 char 只需要 8 位内存和一个 int 16 位。所以我的问题是 C 中的字符在内存中使用 32 位吗?还是只有 8 位?如果 CPU 从内存中加载一个包含字符的地址,它只有 8 位,它不会收到一个 32 位的字吗?我对此有点困惑,因为我总是被告知所有内容都以 32 位字的形式存储在内存中。
一方面,将字符存储在 8 位块上是有意义的,这样可以节省空间。
【问题讨论】:
-
“我正在学习汇编(针对 MIPS),我知道每个内存调用都会带来一个 32 位字。” - 不,它没有。 MIPS 有 lb 和 sb 用于 8 位,lh 和 sh 用于 16 位。