问题描述
我正在生成机器代码以调用现有系统库中的函数。大多数系统库都是用 C 编写的,所以我将以 C 为例,但这个问题可能适用于任何其他语言。
如果我正确理解 this answer,C 编译器可以自由选择函数的 ABI/调用约定,只要它们保留语义。例如,他们可以选择将返回值的指针作为参数传递以获得复制省略。
这是否意味着没有人能够真正知道从库中调用函数的正确方法是什么,即使它的 C 签名是已知的?
这在实践中是一个真正的问题吗?或者假设所有来自系统库的名称未混淆的函数总是使用系统的默认调用约定是否安全?
对于系统库中具有非错位名称的函数的 ABI/调用约定,我还能做出哪些其他假设或考虑?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)