Assembly 定位独立cose调用printf组件

Assembly 定位独立cose调用printf组件,assembly,Assembly,是 是否可用于位置无关代码? 一方面,调用是相对的,另一方面printf是一个库函数。 如果答案不是,为什么?在链接阶段,printf的代码没有复制到我写的文件中?(在我看来还可以)。您可以使用执行相对远调用(模块间调用),它将绝对地址保存到printf,然后调用printf,执行类似于调用[get+printf\u index*sizeof(ptr)](在汇编/编译期间,此表达式将向下折叠为常量) 另一种方法是将您正在使用的CRT函数合并到共享库/二进制文件中(MSVC称之为静态链接),但of

是否可用于位置无关代码? 一方面,调用是相对的,另一方面printf是一个库函数。
如果答案不是,为什么?在链接阶段,printf的代码没有复制到我写的文件中?(在我看来还可以)。

您可以使用执行相对远调用(模块间调用),它将绝对地址保存到
printf
,然后调用
printf
,执行类似于
调用[get+printf\u index*sizeof(ptr)]
(在汇编/编译期间,此表达式将向下折叠为常量)

另一种方法是将您正在使用的CRT函数合并到共享库/二进制文件中(MSVC称之为静态链接),但ofc会使二进制文件膨胀,使其对未来不友好,从而使静态链接的CRT中可能存在未发现的错误

  call printf