如何将参数传递给函数从Assembly到C.

Pun*_*nit 1 c assembly

我正在使用HCS08和Code Warrior.我从汇编中调用C函数.如何将参数传递给此C函数?

Ben*_*son 6

您需要的是适用于您的平台的ABI或应用程序二进制接口.这将解释如何将参数传递给函数(寄存器,堆栈,混合),哪些寄存器是调用者保存,哪些是被调用者保存,某些寄存器的特殊用途等等.通过遵循常见的ABI,您可以链接由不同编译器构建的库,混合高级语言等.

对于"大"平台,通常很容易找到指定ABI的文档.对于其他人,您可能不得不依赖于拆解C函数并查看其功能.注意它在序言中保存的寄存器以及它可能会粉碎的寄存器.还要注意序言如何在条目上保存堆栈指针(或帧指针),因为如果你想让调试器工作,你必须模仿它.

它看起来像HCS08由飞思卡尔中记录的调用约定的应用笔记.