这个问题回答起来还是比较复杂的,需要对C和C++语言有比较深的研究,如果有汇编语言的基础更好一些。
对于函数简单返回值,
如果是简单数据类型,是通过寄存器返回的,比如整形,长整型,字符型,bool型,指针型。
比如AX,EAX,AX:DX,EAX:EDX,RAX,
对于浮点型是通过 FP0,XMM0,YMM0等返回;
如果返回值是结构体或者类(不是结构体指针或者类指针哦),说起来就复杂多了,还真是通过栈来返回的。
函数调用之前,先在栈上分配一个空间,作为存储返回值用,在函数return以后,栈并不清空,等待复制结束后,栈才清空。
|