相关名词解释
- 字节 (byte):8位
- 字(word):通常是16位,两个字节
- DWORD:全称为 double word,两个字,四个字节,32位
- QWORD:全称为 quad word,四个字,八个字节,64位
Windows x64 寄存器介绍
64位CPU有16个通用寄存器,寄存器存放8个字节数据,它们名称分别为
rax,rbx,rcx,rdx,rsi,rdi,rsp,rbp
r8,r9,r10,r11,r12,r13,r14,r15
空间大于8字节的参数用参照传递,不能把一个参数分割到多个寄存器中进行传递;前四个整型或指针类型参数从左到右由RCX,RDX,R8,R9依次传递,前四个浮点类型参数从左到右由XMM0,XMM1,XMM2,XMM3依次传递。第五个和其后的参数通过栈传递,参数从右到左一次入栈。
__m128 类型, 数组和字符串不能通过值传递,只能通过指针。
结构体和union如果大小是1,2,4,8字节,用整数的传参方式;否则通过指针传递。
小于等于64位的整型或指针类型返回值由RAX传递。
浮点返回值由XMM0传递。