如何链接两个nasm源文件

时间:2011-11-18 18:14:29

标签: compiler-construction assembly linker nasm extern

我有一个文件定义了非常基本的IO功能,我想创建另一个使用该文件的文件。

有没有办法将这两个文件联系起来?

prints.asm:

os_return:
    ;some code to return to os
print_AnInt:
    ;some code to output an int, including negatives - gets param from stack
print_AChar:
    ;some code to output a char - gets param from stack

usingPrintTest.asm:

main:
   push qword 'a'
   call print_AChar ;gets this from prints.asm somehow (that's my question)
   call os_return   ;and this too..

请注意,这些不是实际文件......它们只是用于解释我的问题:)

谢谢!

1 个答案:

答案 0 :(得分:5)

当然 - 你只需要使用链接器。汇总每个文件:

nasm -o prints.o prints.asm
nasm -o usingPrintTest.o usingPrintTest.asm

然后,您可以将输出对象传递给链接器。类似的东西:

gcc -o myProgramName prints.o usingPrintTest.o

使用gcc作为链接器驱动程序可以通过链接运行程序所需的OS库来解决一些有趣的业务。您可能需要在usingprintTest.asm中做一些声明,让它知道print_Acharos_return将在其他地方定义 - 在nasm中,您将使用{{ 1}}汇编指令:

extern