《深入理解計算機系統(第三版)》閱讀隨筆
在 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,但是由於它們屬於不同的指令集,因此命名不會衝突。