[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.1 메뉴얼의 구조

이 메뉴얼은 GNU as를 어떻게 사용하는가에 대해 여러분들이 알고 싶어 하는 것들을 설명할 것이다. 이곳에는 일반적으로 소스파일에서 나올 수 있는 심볼, 상수, 표현등의 표기법을 포함하는 소스파일에서의 문법을 설명한다. 그리고 as가 이해할 수 있는 지시자들과 as를 어떻게 불러낼 것인지에 대한 것도 포함 되어 있다.

이 메뉴얼은 또한 어셈블러의 각양각색의 기계에 의존적인 특징들에 대해서도 설명한다.

다르게 말하면, 이 메뉴얼은 어셈블리 언어에서 프로그래밍을 위한 명령어들 을 제공하지는 않을 것이다—일반적인 범주에서 홀로 프로그래밍을 하라! 마찬 가지의미로, 기계구조에 대한 기본적인 도입단계도 설명하지 않는다. 그리고 특별한 구조에만 해당되는 명령어들과, 표준 니모닉들, 레지스터 또는 어드레싱 모드도 설명하지 않을 것이다. 이러한 것들에 대해 더 자세한 것을 알고 싶다면 해당 제작사에서 만든 기계 구조 메뉴얼을 보기 바란다.


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.2 as, the GNU Assembler

GNU as는 어셈블러의 일종이다. 만일 여러분들이 GNU 어셈블러를 하나의 아키 텍쳐에서 사용해보았거나 사용하고 있고, 그것을 다른 아키텍쳐에서 사용하 려고 한다면 아주 유사한 환경을 얻을 수 있을 것이다. 각각의 버젼은 다른 버젼들과 목적 파일 포멧, 대부분의 어셈블러 지시자 (종종 의사 작동자(pseudo-ops)라고 불리기도 한다)와 어셈블러 문법적인 면 에서 많은 공통점을 가지고 있다.

as는 처음에 GNU C 컴파일러인 gcc의 출력물을 어셈블하기 위해 고안되었고, 이 어셈블된 것은 링커 ld가 사용하도록 할 작정이었다. 그럼에도 불구하고, 우리들은 같은 기계상의 다른 어셈블러가 어셈블 할 수 있는 모든 것들을 정확 하게 어셈블 할 수 있게 as를 만들어 왔다.

많은 예외들도 문서화하였다 (see section 기계에 의존하는 것들). 이것은 같은 아키텍쳐상의 다른 어셈블러에게 도 항상 꼭같은 문법을 사용한다는 것을 의미하지는 않는다. 예를 들면, 우리 들은 680x0 버젼의 어셈블리 언어 문법에서 몇개의 호환되지 않는 버젼을 알고 있다.

오래된 구닥다리 어셈블러들과는 다르게, as는 소스파일을 1-pass 방식에 의 해 어셈블한다. 이것은 .org 지시자에서 미묘하게 충돌한다(see section .org).


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.3 목적 파일의 포맷

GNU 어셈블러는 여러개의 다양한 목적 파일 포맷을 생성하도록 설정을 할 수 있다. 그리고 일반적으로 이것은 어셈블리 언어로 프로그램을 짜는 방 법에는 다른 영향을 미치지 않는다. 그러나 디버깅 심볼을 위한 지시자는 다 른 파일 포맷에서는 일반적으로 달라진다. See section 심볼의 속성.


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4 명령행

명령행에서 as의 이름을 적은 다음, 옵션들과 파일이름을 포함 할 수 있다. 옵션은 특별한 순서없이 나타날 수 있고, 파일이름은 옵션의 앞,뒤, 중간 어디에 놓여질 것이다. 파일이름의 순서는 중요하다.

--’ (두개의 ‘-’)은 표준입력 파일을 명시하는 것이고, as는 그것을 파일로 간주하고 어셈블 할 것이다.

--’만 제외하고는 어떤 명령행 인자든지 ‘-’로 시작하는 것은 옵션이다. 각 각의 옵션은 as의 행동을 변화시킨다. 하나의 옵션은 또다른 옵션이 작동하는 방법을 변화시키지 못한다. 옵션은 ‘-’ 다음에 하나이상의 글자가 따라온다. 어 떤 글자인가가 중요하다. 모든 옵션은 선택적이다.

어떤 옵션 다음에는 정확히 하나의 파일이름 만이 뒤따라 와야 한다. 그 파일 이름은 아마도 그 옵션의 특정글자 다음에 바로 따라온다(구닥다리 어셈블러들과 의 호환성을 위해서)거나 파일이름이 다음 명령행 인자(GNU 표준)로 따라올 것 이다. 이 두개의 형태는 같다:

as -o my-object-file.o mumble.s
as -omy-object-file.o mumble.s

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.5 입력 파일들

여기서는 소스 프로그램이라는 말을 줄여서, 소스라고 사용하겠다. 소스 는 as가 한번 실행되어서 처리할 수 있는 프로그램 입력을 이야기한다. 프로그램 은 하나 이상의 파일이 될 수 있는 데, 파일 속에서 소스가 얼마나 단편화되 어 있는냐 하는 문제는 소스의 의미를 퇴색시키지는 못한다.

소스 프로그램은 모든 파일에서 어떤 특정 순서대로 정리된 텍스트의 연속이다.

매번 여러분들은 정확히 하나의 소스 프로그램을 어셈블하기 위해 as를 실행한 다. 소스 프로그램은 하나이상의 파일로 되어 있다. (표준입력도 하나의 파일이다.)

여러분들은 as를 실행할 때 명령행에서 0개 이상의 입력 파일이름을 지정할 것 이다. 입력파일은 왼쪽에서 오른쪽으로 읽는다. 옵션이나 다른 특별한 의미를 지니지 않는 명령행 인자는 입력파일 이름으로 간주된다.

as는 파일이름을 지정하지 않으면 보통 여러분의 터미널인 표준입력으로 부터 읽기를 시도한다. 쓰넣을 것이 없다면 <ctl-D>를 입력하여 as에게 더 이상 어셈블 할 프로그램이 없다는 것을 알리면 된다.

명령행에서 표준입력을 사용하고 싶다면 ‘--’을 사용하라.

소스가 텅비어 있다면, as는 조그마한 텅빈 목적 파일을 만들 것이다.

파일이름과 줄번호(line-numbers)

입력파일이나 보통 파일에서 줄을 매기는 것은 두가지 방법이 있는 데, 양쪽다 에러메세지를 출력하는 데 사용될 것이다. 하나는 물리적인 파일에서 줄번호를 참조하는 것이고 다른 하나는 “논리적인”파일의 줄번호를 참조하는 것이다. See section 애러와 경고 메세지.

물리적인 파일이란 명령행에서 as에게 주어진 파일이름을 말한다.

논리적인 파일이란 어셈블러 지시자에 의해 선언된 이름이다. 이것은 물리적인 파일과는 상관없다. 논리적인 파일 이름은 as 소스가 다른 파일들과 함께 합쳐질 때 원래의 소스 파일을 반영하여 에러메세지를 취급하는 데 도움을 준다. See section .app-file.


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.6 출력(목적) 파일

매번 여러분들이 as를 실행시키면 어셈블리 프로그램을 수치로 변환시킨 출력파일 을 생성할 것이다. 이 파일이 목적 파일이며,

-o 옵션으로 다른 이름을 지정하지 않았을때, a.out, 또는 as가 Intel 80960으로 설정이 되면 b.out 이 될 것이다. 관습적으로 목적 파일의 이름은 ‘.o’로 끝난다. ’a.out’이라는 기본 이름은 역사적인 이 유에서 연유한다. 오래된 어셈블러들은 어셈블을 하는 데 아예 실행 가능한 프로그 램을 만들어 내는 능력도 가지고 있었다. (어떤 포맷에서는, 이러한 것은 현재 불 가능하나 포맷은 a.out을 만들어 낼 수 있을 것이다.)

목적 파일은 링커 ld에게는 입력파일로서의 의미가 있다. 그것은 어셈블된 코드와 어셈블된 프로그램을 실행파일로 구성하는 데 필요한 정보를 가지고 있으 며, (선택적으로) 디버거를 위한 심볼릭 정보를 가지고 있다.


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.7 에러와 경고 메세지

as는 경고와 에러메세지를 표준에러파일(보통은 터미널)로 쓸 것이다. 이것은 컴파일러가 자동적으로 as를 실행시킬 때에는 발생하지 않는다. 경고는 as가 결함 이 있는 프로그램을 어셈블을 완수하면서 사실이라 유추되는 것을 출력한다. 에러는 치명적인 문제점을 보고하고 어셈블하기를 멈춘다.

경고 메세지는 아래의 포맷과 같이 나타난다.

file_name:NNN:Warning Message Text

(NNN은 줄번호이다). 만일 논리적인 파일이름이 주어진다면 (see section .app-file) 그것이 "파일이름"으 로 사용될 것이고, 아니라면 현재의 입력파일이 ‘파일이름’으로 사용될 것이다. 만일 논리적인 줄번호가 주어진다면 (see section .line) 그것은 줄번호를 출력하는 데 사용될 것이고, 아니라면 현재의 소스파일에서 활성화된 줄이 출력될 것이다. 경고문장은 설명조 로 될 것이다(유닉스 전통에 따라).

에러 메세지의 포맷은 다음과 같다.

file_name:NNN:FATAL:Error Message Text

파일이름과 줄번호는 경고메세지 때와 같다. 활성화된 에러문장은 그리 설명적 이지 못할 것이다.


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated on February 24, 2015 using texi2html 5.0.