내가 때문에 또 다른 질문에 대한 제안의 내 C 코드에서 내 어셈블리 코드를 분리하기 위해 노력하고있어하지만 난이 오류 받고 있어요 :쓰기 인라인 어셈블리
arm-linux-gnueabihf-gcc -O0 -g3 -Wall -c -fmessage-length=0 -mfpu=neon -o src/ASM.o ../src/ASM.c
In file included from ../src/ASM.c:1:0:
../src/asm.S:1:12: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘:’ token
mul64x64asm:
^
내가 퍼팅 시도를 한 무리의 장소에서 세미콜론하지만 내 문제를 해결하지 않았다면이 문제와 관련이 없더라도 도움을 받으실 수 있습니다.
ASM.c
#include "asm.S"
int main(void) {
extern void mul64x64asm();
mul64x64asm();
return 1;
}
asm.S
mul64x64asm:
MOVW R0,0x12f4
MOVT R0,0x5678
UPDATE : 내가 제안 된 답변을 시도하고이 함께 결국 은 여기 내 ASM.c 및 asm.S 파일입니다
arm-linux-gnueabihf-as -g --gstabs -o src/asm.o ../src/asm.S
arm-linux-gnueabihf-gcc -O0 -g3 -Wall -c -fmessage-length=0 -mfpu=neon -o src/ASM.o ../src/ASM.c
arm-linux-gnueabihf-gcc -o ASM src/ASM.o src/asm.o ../src/asm.S
src/ASM.o: In function `main':
/home/yunus/eclipse-workspace/ASM/Debug/../src/ASM.c:4: undefined reference to `mul64x64asm'
collect2: error: ld returned 1 exit status
이클립스가 asm.S와 ASM.c를 모두 obj로 컴파일한다고 생각합니다. 여기에서 그들을 연결하고 연결합니다. 업데이트 2
: 그래서 나는 @fuz의 지시를 따라 내 asm.S 나는 가능한 한 적은 코드로 작업이를 얻기 위해 원 조금을 제기 asm.S
.globl mul64x64asm
mul64x64asm:
MOVW R0,0x12f4
MOVT R0,0x5678
변경 내가 너무 .size 기호를 제거했습니다.
../src/asm.S:2: Error: unrecognised symbol type ""
는 유형 기호를 제거하고 지금은이 오류 받고 있어요 : 그것은이 라인에 연결되지 않도록
arm-linux-gnueabihf-as -g --gstabs -o src/asm.o ../src/asm.S
arm-linux-gnueabihf-gcc -o ASM src/ASM.o src/asm.o ../src/asm.S
/tmp/ccYM9smZ.o: In function `mul64x64asm':
(.text+0x0): multiple definition of `mul64x64asm'
src/asm.o:../src/asm.S:3: first defined here
collect2: error: ld returned 1 exit status
제거 내 asm.S 이클립스에서 링커 구성에서 파일을 :
arm-linux-gnueabihf-gcc -o ASM src/ASM.o src/asm.o ../src/asm.S
마침내 제대로 작동합니다. 답변/의견을 보내 주신 모든 분들께 감사드립니다.
최종 업데이트 :
.text
.globl mul64x64asm
.type mul64x64asm,%function
mul64x64asm:
mov r0, #2
mov r1, #3
bx lr
.size mul64x64asm,.-mul64x64asm
어셈블리 코드를 #include하는 대신 별도로 어셈블 링하고 결과 객체 파일을 최종 이진 파일에 연결해야합니다. 포함 할 내용은 어셈블리 코드에서 전역 심볼을 선언하는 헤더입니다. – Michael
함께 연결할 수 없습니까? – klutt
또한 포함하지 않고 함께 링크를 시도했지만 정의되지 않은 참조 오류로 끝납니다. @klutt –