2011-11-18 3 views
6

非常に基本的なIO関数を定義するファイルがあり、このファイルを使用する別のファイルを作成したいとします。2つのnasmソースファイルをリンクする方法

これら2つのファイルをリンクする方法はありますか?

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

注これらは実際のファイルではありません...彼らはちょうど私の問題を説明するために使用している:)

ありがとう!

答えて

4

確かに、リンカーを使用するだけです。あなたのファイルのそれぞれを組み立て:

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

次に、あなたのリンカへの出力オブジェクトを渡すことができます。ような何か:リンカドライバとしてgccを使用して

gcc -o myProgramName prints.o usingPrintTest.o 

は、実行するプログラムのために必要なOSのライブラリをリンクすると、いくつかの面白いビジネスを解決することができます。

extern print_Achar 
extern os_return 
+0

おかげでたくさんの男を:あなたはexternアセンブラディレクティブを使用します、nasmに - あなたはそれがprint_Acharos_returnが他の場所で定義しようとしていることを知っているようにusingprintTest.asmにいくつかの宣言を行う必要があります。私たちがいくつかの強烈な検索をした頃、私たちはあなたがそれを得る前に答えSECを出しました:P – meltuhamy

関連する問題