繁体   English   中英

从汇编代码中调用库中的C函数

[英]Calling C function in library from assembly code

我需要在nasm程序中调用来自不同C库的某些函数。

图书馆:

 <sys/ptrace.h>
 <sys/wait.h>

...以及类似ptrace,execl,wait等的功能。

如何在汇编语言中使用c库函数fgets?

通常有两种方法可以使用汇编程序中的C /或任何其他HLL函数:

  1. 静态链接-如果使用链接器,则可以将程序与所需的HLL生成的.obj或.lib文件链接在一起,并且

  2. 动态链接-您的程序在加载过程中链接到所需的功能,而不是编译过程。 有两种可能的实现:

    2.1。 手动加载动态库并获取所需函数的地址。 为此,您必须使用OS提供的服务。 例如,在Linux中,这是sys_uselib(已过时),或者您自己加载该库并为功能地址解析ELF文件。

    2.2。 构建导入表,其中包含要使用的库和函数的列表。 然后,OS加载程序将自动在占位符变量中提供函数的地址,从中可以间接调用它们。

所有这些方法都是高度依赖于OS和汇编程序的,因此我只能为我使用的汇编程序提供示例:

FreshLib的导入宏 ,可为Linux构建导入表。

Windows也一样

Linux中库“ libc.so”的使用示例

Windows中库“ user32.dll”的使用示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM