2014-04-16 2 views
0

현재 "컴퓨터 아키텍처 및 조직"클래스에 있습니다. 저의 교수는 스팍 어셈블러 언어 (Sparc Assembler Language)에 미니 운영체제를 작성했습니다. 교수님은 이제 재귀 함수를 작성하고 결과를 콘솔에 출력하길 원합니다.Sparc 어셈블리 언어 컴파일

제 질문은, 프로그램을 어떻게 컴파일하고 테스트합니까? 나는 정말로 이해하지 못한다. 지난 학기에 나는 어셈블리 언어 (Assembly Language)라는 수업을 들었습니다. 그 수업에서 나는 "Sparc"아키텍처에 대해 결코 알지 못했다. 어셈블리 언어를 항상 인라인 C와 함께 사용하고 Visual Basic을 사용하여 프로그램을 컴파일합니다. 이제 나는 방황하고 있습니다.

답변

1

Here은 gcc로 코드 컴파일 및 실행을 포함하여 SPARC 어셈블리 언어에 대한 유용한 자습서입니다. SPARC Assembly Language도 참조하십시오.

1

어셈블러 코드를 vi (1)에 쓴 다음 어셈블러 as (1)을 사용하여 어셈블러 코드를 .o 컴퓨터 코드 객체 파일로 어셈블합니다. 그런 다음 링크 편집기 ld (1)를 사용하여 .o 파일에 관련 실행 파일 및 링크 형식 (ELF) 정보를 추가하고 외부 기호 (함수 객체를 공유 객체 라이브러리로 호출)를 해결함으로써 런타임 링커 인 ld.so.1이 실행할 수있는 실행 파일.

as hello.s -o hello.o && ld hello.o -o hello && ./hello 

안녕하세요, 세계!

cc hello.o -o hello && ./hello 

gcc hello.o -o hello && ./hello 

위의 호출이와 링크 편집기, LD (1)을 요구한다 : 당신은 또한 실행 파일로 쓴 어셈블러 코드를 연결하기 위해 C 또는 C++ 컴파일러의 프론트 엔드를 사용할 수

배후에서 올바른 옵션을 선택하십시오.

어셈블러 코드가 libc로 함수를 호출한다고 가정 해 봅시다. 그런 다음 추가 단계를 것 :

; generates hello.o 

as hello.s && ld hello.o -lc -o hello && ./hello 

-lc 옵션은 libc를 함께 연결할 링커를 알려줍니다. "lib"는 링커에 의해 자동으로 추가됩니다.

+0

또는'gcc hello.S -o hello'는 libc와 플랫폼에 필요한 다른 것들을 어셈블하고 링크합니다. 'main' 대신'_start'를 쓰면 gcc hello.S -nostdlib -static -o hello'를 쓸 수 있습니다. –