如何在C中包装非标准调用约定?

时间:2010-10-26 02:31:40

标签: c assembly inline-assembly calling-convention

没有详细说明,我需要使用C代码中的非标准调用约定。使用此约定的函数可能会在堆栈上返回多个值。将每个函数放在一个使用内联汇编来进行调用的包装器中,通过给予包装器的指针参数发送输出是很简单的。不幸的是,这个解决方案没有很好地概括,我需要一些适用于一般情况的东西。我应该放弃并使用宏来封装包装,还是有更通用的方法来编写一个可变的invoke函数来处理管理堆栈的脏工作?

1 个答案:

答案 0 :(得分:3)

无论您选择哪种方法,都需要在汇编中编写包装器。没有办法摆弄C中的堆栈。我喜欢你写一个invoke包装器(在asm中)执行所有脏工作,然后用C包装它的想法。