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)的后缀是一样,可能会引起指令的冲突,实际上并不会,因为,浮点数使用的指令和寄存器和整数所使用的完全不同。