1
C와 어셈블리 코드를 연결하는 데 문제가 있습니다. 일부 솔루션을 검색하려고했지만 아무 것도 발견하지 못했습니다.어셈블리와 C를 연결할 수 없습니다
C 파일 는 "l3.c는"은 다음과 같습니다
#include <stdio.h>
#include <stdlib.h>
const int INP_SIZE = 100;
extern int mult(int c1, int c2);
int main()
{
char number[INP_SIZE];
scanf("%s",number);
printf("You typed: %s \n",number);
int j=2;
int k=5;
j = mult(j,k); #here is the problem
printf("%d",j);
scanf("%s",number);
return 0;
}
이 같은 asembly "mult.s"
내 메이크에서.type mult, @function
mult:
push %rbp
mov %rsp, %rbp
mov 8(%rbp), %rbx
mov 12(%rbp), %rcx
mov $0, %rax
add %rbx, %rax;
add %rcx, %rax;
mov %rbp, %rsp
pop %rbp
ret
난 다음있어 라인 (대부분의 최근 솔루션 내가 봤 거든) :
l3:
as -g -o mult.o mult.s
gcc -o l3.o -c l3.c
gcc l3.o mult.o
콘솔에 입력하면 그것은 던지고있다 : undefined reference to 'mult'
내가 //j = mult(j,k);
프로그램에 문제가 있다고 대답 할 때. 어떻게 연결해야합니까?
근무했습니다. 감사합니다. 그리고 네, GNU를 사용하여 – Kmaczek
으로 도움이되어 주셔서 감사합니다. 함수가 "mult"라고 불리는 것은 좀 이상하지만 스택에서 두 개의 값을 더하는 것처럼 보입니다. 그들은 어떻게 거기에 도착합니까? –
예, sth와 같이 추가해야합니다. 이 배후에 길고 흥미로운 이야기가 있습니다.이 가치가 어떻게 존재 하는지를 의미합니까? Heh, 나는 단지 어셈블리에 들어가는 방법을 알아 내려고하고있다. – Kmaczek