2017-10-03 3 views
1

이 두 파일이 있으므로 하나는 .c이고 하나는 .s입니다. 이것들은 테스트 파일 일 뿐이므로 ARM 스크립트를 사용하여 C 작업을 수행 할 수는 있지만, 필자의 경우에는 함께 사용할 수 없습니다. 나는 Visual Studio 또는 VS 코드 (또는 다른 IDE를 사용하여 쉽게 알 수 있다면)를 사용하여 더 쉽게 만들 수 있는지 궁금합니다. 여기 Visual Studio를 사용하여 ARM 스크립트로 C 코드를 실행할 수 있습니까?

내 코드입니다 :

ARM

.global add2 
add2: 
    stmfd sp!, {v1-v6, lr} @ 'standard' entry, save registers on the stack 
    add a1, a1, a2   @ do the addition requested 
    ldmfd sp!, {v1-v6, pc} 

C

#include <stdio.h> /* standard input and output */ 
#include <stdlib.h> /* standard library */ 
extern int add2(int i, int j); /* tell the compiler that the routine is not defined here */ 
int main(int argc, char * argv[]) /* entry point to the program */ 
{ 
    int i, j; /* declare the variable types */ 
    int answer; 
    i = 5; /* give the variables values */ 
    j = 20; 
    answer = add2(i, j); /* call the assembly language routine */ 
    printf("result is : %d\n", answer); /* print out the answer */ 
    exit(0); /* leave the driver program */ 
} 

현재 내가 그들을 연결하기 위해 사용하고 이상한 자바 프로그램은 나에게 오류

"D:\Joe\College Stuff\CS 252\add.s:1: Error: bad instruction ` .global add2'"

을주고있다

도움이 되셨습니까?

+1

그  부분은 .... 들여 또는 공백을 사용해보십시오 파일 인코딩 문제처럼 보이는 돈 ':하지만 그 일을하는 한 가지 방법은 내가이 질문에서 발견 명령 줄에서입니다 들여 쓰기를하고 무슨 일이 일어나는 지보십시오. 무슨 "이상한 자바 프로그램"? 명시 해주세요! – rickythefox

+2

이것은 "ARM 스크립트"가 아닙니다. ARM 어셈블리 코드처럼 보입니다 (특정 구문에 익숙하지 않더라도 AT & T와 인텔 스타일 등 다른 기본 구문 언어에 대한 구문이 다릅니다). – Dai

+1

여기서는 Visual Studio가 도움이되지 않습니다. 어셈블러를 실행하여 ARM 어셈블리 파일을 실행 가능 ARM 객체 파일로 변환하고 C 프로그램과 정적으로 링크하는 방법을 배워야합니다. Visual Studio의 Visual C++ 구성 요소는 실제로 C 도구 체인이 아닙니다 (C99로 확인조차하지 않습니다). 명령 줄 도구 만 사용하고 교사/교수로부터 지시를 받아야합니다. 또한 Windows를 사용 하시겠습니까? 이러한 종류의 작업은 크로스 컴파일 기능을위한 Linux 시스템에서 가장 잘 수행됩니다. – Dai

답변

3

이 오류를 수정하려면 파일 시작 부분에 BOM (바이트 순서 표시)을 삽입하지 않도록 편집기를 구성하십시오. '다른 이름으로 저장'을 선택한 다음 다른 인코딩 (예 : 'ASCII'또는 'UTF-8 없음 BOM'또는 이와 비슷한 형식)을 선택하여이 작업을 수행 할 수 있습니다. ARM 어셈블리 파일을 만드는 데 사용 된 편집기를 알려 주시면 좀 더 구체적인 도움을 드릴 수 있습니다.

+0

메모장을 사용하여 초기 파일을 만들었지 만 지금부터는 VS 코드 – wjmccann

+0

을 사용합니다. @wjmccann VS 코드는 기본적으로 올바른 인코딩을 사용해야합니다. – fuz

관련 문제