代码之家  ›  专栏  ›  技术社区  ›  Jon Purdy

如何用C语言包装非标准的调用约定?

  •  3
  • Jon Purdy  · 技术社区  · 14 年前

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

    1 回复  |  直到 14 年前
        1
  •  3
  •   R.. GitHub STOP HELPING ICE    14 年前

    无论选择哪种方法,都需要在程序集中编写包装器。没有办法摆弄C的那堆东西。我真的很喜欢你写一个 invoke 包装器(在asm中)完成所有的脏工作,然后用C包装。