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

时间:2013-07-18 16:18:50

标签: c assembly nasm

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

库:

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

... 和ptrace,execl,wait等函数

How to use c library function fgets in assembly language?

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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

  4. 所有这些方法都依赖于OS和汇编程序,因此我只能为汇编程序I use提供示例:

    Import macros用于为Linux构建导入表的FreshLib。

    The same for Windows

    Example of use for the library "libc.so" in Linux

    Example of use for the library "user32.dll" in Windows