Как связать два исходных файла NASM - PullRequest
6 голосов
/ 18 ноября 2011

У меня есть файл, который определяет очень основные функции ввода-вывода, и я хочу создать другой файл, который использует этот файл.

Есть ли способ связать эти два файла?

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 Ответ

5 голосов
/ 18 ноября 2011

Конечно - вам просто нужно использовать компоновщик. Соберите каждый из ваших файлов:

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

Затем вы можете передать выходные объекты вашему компоновщику. Что-то вроде:

gcc -o myProgramName prints.o usingPrintTest.o

Использование gcc в качестве драйвера компоновщика может решить некоторую забавную задачу, связав библиотеки ОС, необходимые для работы вашей программы. Возможно, вам придется сделать несколько объявлений в usingprintTest.asm, чтобы сообщить, что print_Achar и os_return будут определены в другом месте - в nasm вы будете использовать директиву extern на ассемблере:

extern print_Achar
extern os_return
...