我是C的新手,有一件事我无法理解.当函数返回不大于寄存器的东西时 - 我的编译器把它放在EAX中.当我返回大结构(不是指针而是结构本身)时 - 它通过堆栈返回.
我的问题是:编译器如何知道如何调用另一个对象导出的函数?有一个调用约定(比如stdcall)但它是关于传递参数,而不是读取返回的值,对吧?
应该有一些规则,如"如果声明的返回值大于EAX,则从[bp -...]"获取.
还有一个:是否正确地说我想要返回的对象,比寄存器大,应该存储在堆中并由指针返回以防止所有堆栈操作?
谢谢.
c function return-value calling-convention
c ×1
calling-convention ×1
function ×1
return-value ×1