Posts Tagged ‘VC++’
昨晚整理资料,翻出一个自己一年前写的txt,估计是当时自己闲得蛋疼的时候研究的玩意,只记录了实验数据和结论。实验就懒得重现了,只把结果在这记一下吧,供参考。
1、返回类型为结构体
结论:
1、调用函数前,先给返回的结构体预留空间,并把首地址压栈;
2、函数内部利用压栈的首地址设置返回的结构体信息;
3、函数返回值(eax)为压栈的首地址;
4、调用者把返回值(eax)指向的空间存放的结构体拷贝到栈上层的一段空间中;//第一次copy
5、调用者利用栈上层的这段空间存放的结构体信息给变量赋值。//第二次copy
2、形参类型为结构体
结论:
结构体为参数时,仿照压栈的方式,在栈上拉出结构体大小的空间并填充,作为函数参数(相当于将结构体压栈)。