3進棧
1進棧
&value進棧
調(diào)用fun_value
esp += 12 //從棧上刪除函數(shù)調(diào)用的三個參數(shù),12個字節(jié)
//A的size大于4字節(jié)即可
A fun_value(int a, int c)
{
A r;
r.a = a + c;
return r;
}
相當于是把函數(shù)轉換為
void fun_value(A* ret, int a, int c)
{
A r;
A::A(&r);
r.a = a + c;
ret->A::A(&r);
}
如果返回值的size小于地址寬度的話嚣潜,函數(shù)通過eax寄存器返回值。
所以A的size要大于4.
如果通過A*的方式返回的話锭弊,函數(shù)原型不變玄组。