2

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

图书馆:

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

...以及 ptrace、execl、wait 等函数。

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

4

1 回答 1

0

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

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

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

    2.1。手动加载动态库并获取所需函数的地址。为此,您必须使用操作系统提供的服务。例如,在 Linux 中,这是 sys_uselib(相当过时),或者自己加载库并解析 ELF 文件以获取函数地址;

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

所有这些方法都高度依赖于操作系统和汇编程序,所以我只能为我使用的汇编程序提供示例:

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

Windows 也一样

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

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

于 2013-07-18T17:35:28.823 回答