2014-02-17 50 views
1

我正在嘗試在NASM for Linux中實現C函數「exp」。該函數採用double值x,並返回一個double值r = e^x,其中e是歐拉數。這是我的實現:C函數「Exp」如何在NASM for Linux中正確使用?

extern exp 

SECTION .bss 

    doubleActual: resq 1 
    doubleX: resq 1 

SECTION .text 

    main: 
    ;some other code here 

    ;calculate actual result 
    push doubleActual ; place to store result 
    push doubleX ;give the function what x is. 
    call exp 
    add esp, 8 

在編譯的嘗試,我得到如下:

hw7_3.o: In function `termIsLess': 
hw7_3.asm:(.text+0xf9): undefined reference to `exp' 

這是指當我實際調用EXP,這是奇怪的,因爲「外部EXP」似乎工作正好。我做錯了什麼?

+0

你鏈接到它定義的任何庫嗎? – delnan

+0

使用NASM for linux,這通常不是必需的。例如,我可以「extern printf」,然後立即可以在代碼中使用「call printf」。我認爲這對C函數是獨一無二的。 – Drifter64

+1

我的猜測是你需要'-lm'鏈接cmath庫。 – Michael

回答