[英]Calling C function in library from assembly code
我需要在nasm程序中调用来自不同C库的某些函数。
图书馆:
<sys/ptrace.h>
<sys/wait.h>
...以及类似ptrace,execl,wait等的功能。
通常有两种方法可以使用汇编程序中的C /或任何其他HLL函数:
静态链接-如果使用链接器,则可以将程序与所需的HLL生成的.obj或.lib文件链接在一起,并且
动态链接-您的程序在加载过程中链接到所需的功能,而不是编译过程。 有两种可能的实现:
2.1。 手动加载动态库并获取所需函数的地址。 为此,您必须使用OS提供的服务。 例如,在Linux中,这是sys_uselib(已过时),或者您自己加载该库并为功能地址解析ELF文件。
2.2。 构建导入表,其中包含要使用的库和函数的列表。 然后,OS加载程序将自动在占位符变量中提供函数的地址,从中可以间接调用它们。
所有这些方法都是高度依赖于OS和汇编程序的,因此我只能为我使用的汇编程序提供示例:
FreshLib的导入宏 ,可为Linux构建导入表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.