传递给Linux C内联函数的参数



当从C程序调用具有两个整数或指针形参的非inline函数时,它们被传递到寄存器rdirsi中。编译可以这样做,整型/指针参数 inline函数传递到寄存器以及(和不是在堆栈上)?

当一个函数被内联时,它被视为其代码被写入调用它的函数中。当发生这种情况时,根本不传递参数。

当函数没有内联时,它与普通函数没有任何区别。inline只是提示编译器尝试内联一个函数;它完全不影响链接

反问:你为什么在乎?我认为你不应该。这是编译器的工作。如果你不相信你的编译器会做正确的事情,你可能根本就不应该使用它。

在C语言中,前两个int型没有传递给%rdi和%rsi…这是ABI/呼叫公约的问题…不是语言的问题。

如果函数确实被内联,并且周围的其他代码允许,则int很可能位于通用寄存器中…

但这绝对不关你的事…如果你关心的话,你可以让编译器生成asm来阅读和学习…

相关内容

  • 没有找到相关文章

最新更新