【发布时间】:2012-03-09 19:34:29
【问题描述】:
我有一些汇编例程,它们被 C 函数调用并从 C 函数中获取参数。现在,我假设这些参数以 cdecl 顺序在堆栈上传递。这是一个公平的假设吗?
编译器 (GCC) 会检测到这一点并确保参数正确传递,还是我应该手动去声明它们 cdecl?如果是这样,如果我指定更高的优化级别,该属性是否仍然有效?
【问题讨论】:
-
不,您的汇编代码直到链接时才符合您的 C 代码。让 C 编译器对您采用的任何调用约定变得聪明为时已晚。内联汇编流行的原因之一。
标签: c assembly arguments calling-convention cdecl