2014-02-17 4 views
1

Linux 용 NASM에서 C 함수 "exp"를 구현하려고합니다. 이 함수는 double 값 x를 취하고 double 값 r = e^x를 반환합니다. 여기서 e는 오일러의 숫자입니다. 이건 내 구현 :C 함수 "Exp"는 Linux 용 NASM에서 어떻게 올바르게 사용할 수 있습니까?

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' 

"통근 특급은"작동하는 것 같다 때문, 실제로 이상한 애 썼는데, 호출 할 때 참조한다 잘 됐네. 내가 뭘 잘못하고 있니?

gcc -m32 name.o -lm -o name 

은 "-lm"태그가 분리되는 C 수학 라이브러리를 연결하는 바로 가기는 다음과 같습니다

+0

정의 된 라이브러리에 링크합니까? – delnan

+0

리눅스에서 NASM을 사용하는 경우, 이것은 일반적으로 필요하지 않습니다. 예를 들어, "extern printf"를 수행 한 다음 즉시 "call printf"를 코드에서 사용할 수 있습니다. 나는 이것이 C 함수에 고유하다고 가정합니다. – Drifter64

+1

내 생각에 cmath 라이브러리에 링크하려면'-lm'이 필요합니다. – Michael

답변