Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我对汇编代码非常陌生,需要知道如何将命令行参数(argc、argv、env)作为函数参数传递。在第 2 行(#RIGHT HERE)是我不知道实现的地方,我需要将三个参数传递到我的 main.js 文件中。有人可以帮忙吗?
我通过运行编译它: gcc -m32 tc ss 下面的代码是 ss 和 mymain 在 tc
main: #RIGHT HERE call mymain ret
您必须了解 32 位 linux ABI(应用程序二进制接口),它描述了传递参数和堆栈使用的调用约定。我不会在这里列出所有细节,但它们很容易在网络上访问。
快速总结:32 位 linux 需要在调用之前将参数存储在堆栈中。您将需要足够的堆栈空间来存储参数,或“推送”它们,这将自动递减堆栈指针。您的呼叫返回后,需要清理此空间。
如果您不想花时间研究 ABI,一个简单的替代方法是编写一个 C 程序,该程序调用一个传入所有参数的函数,然后简单地编译它并查看程序集以了解它是如何完成的,然后复制。