2011-11-18 25 views
6

Ho un file che definisce funzioni IO di base e voglio creare un altro file che utilizza questo file.Come collegare due file sorgente nasm

C'è un modo per collegare questi due file?

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.. 

Nota questi non sono i file effettivi ... sono solo usato per spiegare il mio problema :)

Grazie!

risposta

4

Certo, è sufficiente utilizzare il linker. Assemblare ciascuno dei tuoi file:

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

È quindi possibile passare gli oggetti di output al linker. Qualcosa di simile:

gcc -o myProgramName prints.o usingPrintTest.o 

Utilizzando gcc come il conducente linker in grado di risolvere alcuni affari divertente con che collega le librerie del sistema operativo necessari per il programma da eseguire. Potrebbe essere necessario fare alcune dichiarazioni in usingprintTest.asm per lasciarlo sapere che print_Achar e os_return stanno per essere definiti altrove - in nasm, si utilizza la direttiva extern assembler:

extern print_Achar 
extern os_return 
+0

Grazie uomo molto. Nel momento in cui abbiamo fatto un po 'di ricerca su Google, abbiamo trovato la risposta SECONDI prima di averla: P – meltuhamy