一般情况下,函数返回值是通过eax进行传递的,但是eax只能存储4个字节的信息,对于那些返回值大于4个字节的函数,返回值是如何传递的呢?
假设返回值大小为M字节
1. M <= 4字节,放入eax返回
2. 4 < M <=8,把eax,edx联合起来,其中,edx存储高位,eax存储低位
3. M > 8,如何传递呢?
测试代码:
//test.cpp
如上,test()函数的返回值大小为64字节,那它是如何将这个大小的返回值传递给函数调用者的呢?
g++ -S test.cpp
查看汇编代码,如下: