第3章 程序的机器级表示
3.3 数据格式
由于是从16位体系结构扩展成32位的,Intel用术语“字(word)”表示16位数据类型。因此,称32位数为“双字(double words)”,
C声明 | Intel数据类型 | 汇编代码后缀 |
---|---|---|
char | 字节 | |
short | 字 | |
int | 双字 |
3.4 访问信息
一个x86-64的中央处理单元(CPU)包含一组16个存储64位值的通用目的寄存器。这些寄存器用来存储整数数据和指针。
- %rax %eax 返回值
- %rbx %ebx 被调用者保存
- %rcx %ecx 第4个参数
- %rdx %edx 第3个参数
- %rsi %esi 第2个参数
- %rdi %edi 第1个参数
- %rbp %ebp 被调用者保存
- %rsp %esp 栈指针
- %r8 %r8d 第5个参数
- %r9 %r9d 第6个参数
- %r10 %r10d 调用者保存
- %r11 %r11d 调用者保存
- %r12 %r12d 被调用者保存
- %r13 %r13d 被调用者保存
- %r14 %r14d 被调用者保存
- %r15 %r15d 被调用者保存