Я пытаюсь вызвать функцию сборки из c, но я продолжаю получать ошибки.
.text
.globl integrate
.type integrate, @function
integrate:
push %ebp
mov %esp, %ebp
mov $0,%edi
start_loop:
cmp %edi,1024
je loop_exit
mov 8(%ebp),%eax
mov 12(%ebp),%ecx
sub %eax,%ecx
add %edi,%ecx
incl %edi
jmp start_loop
loop_exit:
movl %ebp, %esp
popl %ebp
ret
Это моя функция сборки, файл с именем integrate.s.
#include <stdio.h>
extern int integrate(int from,int to);
void main()
{
printf("%d",integrate(1,10));
}
Вот мой код c.
function.c:5:6: warning: return type of ‘main’ is not ‘int’ [-Wmain]
/tmp/cciR63og.o: In function `main':
function.c:(.text+0x19): undefined reference to `integrate'
collect2: ld returned 1 exit status
Всякий раз, когда я пытаюсь скомпилировать свой код с помощью функции gcc -Wall function.c -o, он дает ссылку undefined для интеграции ошибки. Я также попытался добавить ссылку на файл integrate.s из c, например
#include<(file path)/integrate.s>
но он не работал так хорошо. Кстати, что делает код сборки, это не важно, на данный момент я просто пытаюсь вызвать функцию из c успешно. Может ли кто-нибудь помочь мне решить эту проблему?