小编Ily*_*lya的帖子

C:通过堆栈/寄存器问题返回值

我是C的新手,有一件事我无法理解.当函数返回不大于寄存器的东西时 - 我的编译器把它放在EAX中.当我返回大结构(不是指针而是结构本身)时 - 它通过堆栈返回.

我的问题是:编译器如何知道如何调用另一个对象导出的函数?有一个调用约定(比如stdcall)但它是关于传递参数,而不是读取返回的值,对吧?

应该有一些规则,如"如果声明的返回值大于EAX,则从[bp -...]"获取.

还有一个:是否正确地说我想要返回的对象,比寄存器大,应该存储在堆中并由指针返回以防止所有堆栈操作?

谢谢.

c function return-value calling-convention

15
推荐指数
1
解决办法
8578
查看次数

标签 统计

c ×1

calling-convention ×1

function ×1

return-value ×1