《深入理解计算机系统(第三版)》阅读随笔
在 Intel CPU 体系中,其最早的 8086 是 16 位机,Intel 用术语“字”表示 16 位数据类型,后来发展到 32 位机时,称 32 位数据类型为“双字”,直到现在的 64 位机,称 64 位数为“四字”。C 语言数据类型在 x86-64 机器中的大小对应关系如下图所示:
C 声明 | Intel 数据类型 | 汇编代码后缀 | 字节大小 |
---|---|---|---|
char | 字节 | b | 1 |
short | 字 | w | 2 |
int | 双字 | l | 4 |
long | 四字 | q | 8 |
char* | 四字 | q | 8 |
float | 单精度 | s | 4 |
double | 双精度 | l | 8 |
其中汇编代码后缀与汇编代码指令结合使用,例如移动双字操作就是 movl,其中四字操作就是 movq。整形双字后缀和浮点型双精度后缀虽然都是 l,但是由于它们属于不同的指令集,因此命名不会冲突。
网友评论