ATT彙編的數據格式
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 |
因爲Intel處理器的體系結構是從16位擴展到32位的,Intel用術語字(word)表示16位數據類型,雙字(double words)表示32位數據類型,四字(quad words)表示64位數據類型。
上表中給出了C語言中的數據類型和Intel數據類型的對應關係,同時,大多數GCC生成的彙編代碼指令都有一個字符的後綴,表明操作數據的大小。
對於浮點數主要兩種數據類型:單精度(4字節)值,對應於C語言中的float數據類型;雙精度(8字節)值,對應於C語言中的double數據類型。
很明顯雙字(int)型和雙精度(double)的後綴是一樣,可能會引起指令的衝突,實際上並不會,因爲,浮點數使用的指令和寄存器和整數所使用的完全不同。