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 수학 라이브러리를 연결하는 바로 가기는 다음과 같습니다
정의 된 라이브러리에 링크합니까? – delnan
리눅스에서 NASM을 사용하는 경우, 이것은 일반적으로 필요하지 않습니다. 예를 들어, "extern printf"를 수행 한 다음 즉시 "call printf"를 코드에서 사용할 수 있습니다. 나는 이것이 C 함수에 고유하다고 가정합니다. – Drifter64
내 생각에 cmath 라이브러리에 링크하려면'-lm'이 필요합니다. – Michael