之前的笔记搬运
函数
传参方式
前四个参数使用R0-R3寄存器, 多余参数使用栈储存;
当一个参数超过DWORD时, 会使用多个连续寄存器来存放传递,但是起始的寄存器编号可以是偶数, 如R0, R2, R4
1 | 如: fun(int a, double b, double c) |
- 这样的一个函数, 会使用R0存放a, R2与R3存放b, 栈存放c, R1因为是奇数所以被舍弃;
结构体传参
- 前4个DWORD量用寄存器传参, 后面使用栈传参, 所以建议使用指针传参;
结构体返回值
结构体大小不超过64位使用R0, R1返回;
超过64位的提前开辟好结构体空间, 在调用函数时传入指针;