【发布时间】:2016-05-04 02:30:56
【问题描述】:
我有一个关于汇编程序的问题。我在想如何将采用多个参数作为参数的 C 函数转换为汇编。所以我的问题是,汇编中是否有一个将参数作为参数进行操作的子程序? 代码可能如下所示:
调用 label1,R16。 其中R16为子程序输入参数。
如果不是这种情况,那么这意味着每次调用 C 函数时,它都会被组装到一个子例程中,其中与特定调用相关的参数会在其中自动替换。这基本上意味着每当调用 C 函数时,编译器都会将其转换为内联函数,这肯定不是这种情况:D
那么哪个是正确的? 非常感谢! :)
【问题讨论】:
-
希望以下链接对您的问题有用:CToAssemblyTranslation。 Wikibooks.
-
哪个程序集? x86 的
call只是一个“记住它来自哪里的跳转”,涉及零参数,你可以随意传递它们。 -
“如果不是这样,那意味着” 参数要么放在调用指令之前的寄存器中,要么放在堆栈中。这取决于您正在编程的 CPU 架构以及您使用的调用约定。
-
在 x86 中,参数存储在堆栈中。了解 ebp 和 esp 寄存器(它们用于为函数参数分配内存)
标签: c assembly compiler-construction