【发布时间】:2017-06-03 22:42:54
【问题描述】:
我有一个适用于 Linux x64 的汇编应用程序,我通过寄存器将参数传递给函数,因此我使用了某种特定的调用约定,在本例中为 fastcall。现在我想从程序集应用程序调用一个 C 函数,比如说,它需要 10 个参数。我是否必须为此切换到cdecl 并通过堆栈传递参数,而不管我的应用程序中其他任何地方我通过寄存器传递它们的事实?是否允许在一个应用程序中混合调用约定?
【问题讨论】:
-
你读过ABI specification吗?它在那里说明了如何处理参数多于可用寄存器的函数。
标签: c assembly linux-kernel nasm