- 各种调用方式的考察
示例:
cdecl方式是调用者清空堆栈:
如果执行的是fastcall:
借助两个寄存器传递参数:
参数1和2借助局部变量来存储:
- 返回值
如果返回值是结构体:
返回值存放在eax和edx两个寄存器中:
返回之后再存放eax和edx到对应的局部变量中:
如果这个结构体中存放的值太多:
调用函数时压入了一个结构体的地址:
子函数中设置完对应的成员的值之后,再返回这个地址:
示例:
cdecl方式是调用者清空堆栈:
如果执行的是fastcall:
借助两个寄存器传递参数:
参数1和2借助局部变量来存储:
如果返回值是结构体:
返回值存放在eax和edx两个寄存器中:
返回之后再存放eax和edx到对应的局部变量中:
如果这个结构体中存放的值太多:
调用函数时压入了一个结构体的地址:
子函数中设置完对应的成员的值之后,再返回这个地址: