[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
심볼은 중심적인 개념이다. 프로그래머는 어떤 것들을 지칭하기 위해서 심 볼을 사용하고, 링커는 링크하기 위해서 심볼을 사용하며, 디버거는 디버깅 하기 위해서 심볼을 사용한다.
경고:
as
는 목적 파일에서 그것들이 선언된 같은 순서대로 위치 시키지 않는다. 이것들은 가끔 버그가 되기도 한다.
5.1 라벨 | ||
5.2 심볼을 다른 값으로 주기 | ||
5.3 심볼 명칭 | ||
5.4 특별한 점 심볼 | ||
5.5 심볼의 속성 |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
라벨은 콜론 ‘:’ 이 바로 뒤에 따라 붙는 하나의 심볼처럼 쓰여진다. 그 심볼 은 현재 활성화된 위치 카운터의 현재 값을 나타낸다. 그리고 예를 들면, 그것 은 적당한 명령 피연산자이다. 만일 같은 심볼을 다른 두개의 위치에 있는 두 개의 심볼로 사용한다면 경고가 떨어질 것이다. 첫번째 정의는 다른 어느 정의를 덮어써버린다.
On the HPPA, the usual form for a label need not be immediately followed by a
colon, but instead must start in column zero. Only one label may be defined on
a single line. To work around this, the HPPA version of as
also
provides a special directive .label
for defining labels more flexibly.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
심볼은 부호 ‘=’ 뒤에 심볼을 작성함으로써 원하는 값을 가지게 할 수 있다.
(see section 표현). 이것은 .set
지시자를 사용하는 것과 같다.(see section .set
)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
심볼은 하나의 글자나 ‘._’중의 하나로 이름이 시작된다. 대부분의
기계에서, 여러분은 $
을 심볼 명칭 안에 사용할 수 있다.
기계에 의존하는 것들 에 의해 예외가 있을 수 있다. 그 문자는
아마도 10진수, 문자, 달러 부호 (See section 기계에 의존하는 것들)에서 다르게
참조되지만 않는다면)와 밑줄 들의 어느 문자열 이라도 따라 올 수 있을
것이다.
AMD 29K 기종에서는 ‘?’이 심볼명칭의 처음으로 시작되지 않는다면
심볼명칭 몸체에 나올 수 있다.
글자의 경우의 수는 충분하다. foo
는 Foo
와는 다른 심볼
이름이다.
각각의 심볼은 명확히 하나의 이름을 가진다. 어셈블리 언어로 짜여진 프로그램 에서 각각의 이름은 명확히 하나의 심볼로 참조한다. 여러분들은 프로그램에서 몇 십번이라도 심볼이름을 사용할 수 있다.
지역적인 심볼은 컴파일러에게 도움을 주고, 프로그래머는 그 명칭을 임시적으 로 사용한다. 10개의 지역 심볼 명칭이 있게 되는 데, 이것은 프로그램의 도처에 서 재 사용될 수 있다. ‘0’ ‘1’ … ‘9’와 같은 명칭을 사용하여 그것들을 참조할 수 있다. 지역적인 심볼을 정의하려면 ‘N:’과 같은 모양으로 쓴다. (N에는 어떠 한 숫자도 올 수 있다). 가장 최근에 이전에 정의된 심볼을 참조하려면 라벨을 정의했을 때와 같은 숫자를 사용하여 ‘Nb’ 와 같이 쓸 수 있다. 이후에 나오는 지 역적인 라벨을 참조하려면 ‘Nf’와 같이 쓴다. N은 10개의 전진참조(역자주: 이후 에 나오는 것을 참조하는 것)의 기회를 준다. ‘b’는 “backwards”이고 ‘f’는 “forwards”이다.
지역 심볼은 현재의 GNU C 컴파일러에 의해 발생하지 않는다.
여러분들이 이러한 라벨을 어떻게 사용할 것인지에 대해서는 제한이 없으나, 어셈블리에서 어떠한 지점에서던지 여러분들은 최근의 10개의 이전의 지역적 인 라벨과 최근의 10개의 이후의 지역적인 라벨을 참조할 수 있음을 기억하라.
지역적인 심볼의 명칭은 고안된 하나의 표기법일 뿐이다. 지역적인 심볼의 명 칭은 어셈블러가 사용하기도 전에 즉각적으로 전통적인 심볼 이름으로 변형된다. 그 심볼의 명칭은 심볼 테이블에 저장되고, 에러메세지로도 나타나며, 선택적으 로 이러한 부분을 가지는 목적 파일로 보내지기도 한다.
L
모든 지역적인 라벨은 ‘L’로 시작한다. 보통 as
와
ld
둘 다 ‘L’로 시작하는 심볼을 잊어버린다. 이러한
라벨은 여러분들이 전혀 볼 수 없는 심볼 을 위해서 사용된다. 만일
‘-L’옵션을 준다면 지역적인 심볼은 목적 파일에서도 유지 될 것이다.
만일 ld
에서 그러한 심볼을 유지할 것을 명 령한다면 그것을
디버깅할 때 사용할 수 있다.
digit
라벨을 ‘0:’으로 쓰면 그 숫자는 ‘0’이고, 라벨을 ‘1:’로 쓰면 그 숫자는 ‘1’ 이다. ‘9:’까지 이렇게 할 수 있다.
A
이러한 특별한 글자가 포함되면 여러분들은 우연히라도 같은 이름의 심볼 방해하지 못할 것이다. 이 글자의 아스키 값은 ‘\001’이다.
ordinal number
이것은 라벨의 구별되는 일련번호이다. 첫번째 ‘0:’은 숫자 ‘1’을 얻을 것 이고 15번재 ‘0:’은 숫자 ‘15’를 얻을 것이다. 마찬가지로 ‘1:’에서 ‘9:’ 까지 가능하다.
예를 들어, 처음 ‘1:’ 은 L1A1
이라 부르고, 44번째
3:
은 L3A44
라고 부른다.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
특별한 심볼 ‘.’은 as
가 어셈블하고 있는 현재의 주소를
참조한다. 그래서, 표 현식 ‘melvin: .long .’은 melvin
을 그것 자신의
주소를 포함하도록 한다. .
로 할당되는 값은 .org
지시자처럼 취급된다.
그래서 표현식 ‘.=.+4’는
‘.space 4’ 와 같다.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
모든 심볼들은 그것의 이름처럼, “값(Value)”과 “형(Type)”이라는 속성을 가 진다. 출력 포맷에 따라 심볼은 부가적인 속성을 가질 수도 있다.
만일 속성을 정의하지 않고 심볼을 사용한다면, 모든 속성은 0으로 가정되며, 별다른 경고도 없을 것이다. 이것은 보통 여러분들이 원하는 심볼을 외부적으로 만들 것이다.
5.5.1 값(Value) | ||
5.5.2 형 (Type) | ||
5.5.3 심볼의 속성: a.out | ||
5.5.4 COFF의 심볼 속성 | ||
5.5.5 Symbol Attributes for SOM |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
심볼의 값은 보통 32 비트이다. text나 data, bss 또는 절대(absolute)섹션
에 있는 라벨의 심볼에 있어서 그 값은 해당섹션의 시작에서 라벨까지의 주소
를 숫자로 나타낸 것이다. 자연스럽게 text, data, bss 섹션의 심볼의 값은
ld
가 링크 작업을 하는 동안 섹션의 기초(base) 주소를
변화시키는 만큼 변한 다. 절대 심볼의 값은 링크 작업을 하는 동안에도
변화하지 않는다. 그 이유 는 그것들의 값이 절대적으로 호출되기 때문이다.
정의되지 않은 심볼의 값은 특별한 방법으로 관리한다. 정의되지 않은
심볼 의 값이 0이면 심볼은 어셈블리 소스 프로그램에서 정의되지 않고,
ld
는 그 소스 프로그램과 링크되는 다른 프로그램으로부터
심볼의 값을 결정하려고 시 도를 할 것이다. 이런 종류의 심볼은 그것을
정의는 하지 않고, 심볼의 이름만 을 기재함으로써 간단하게 할 수 있다.
0이 아닌 값은 .comm
선언으로 나타낸 다. 그 값은 얼마만큼의
저장소를 예약할 것인지를 바이트 단위로 나타낸다. 심 볼은 할당된
저장소의 첫번째 주소를 참조한다.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
심볼의 형 속성은 재배치 (섹션) 정보를 담고 있다. 그 심볼을 가르키는 어떠 한 플래그 세팅도 외부적일 뿐이다. 그리고 (선택사항이지만), 링커와 디버그를 위한 다른 정보도 가지고 있다. 정확한 포맷은 사용중에 있는 목적 코드 출력 포맷에 의존한다.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
a.out
5.5.3.1 기술자(Descriptor) | ||
5.5.3.2 다른 것 |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
이것은 16비트 값이며 원하는 어떠한 것이든 가능하다. .desc
구문(see section .desc
)을 사용하면 심볼의 기술자 값을 만들 수
있다. 이 기술자의 값은 as
에게 아무런 의미도 없다.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
이것은 8비트 값이다. as
에게는 역시 아무른 의미가 없다.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
COFF 포맷은 다수의 부가적인 심볼 속성을 제공한다. 프라이머리(primary)
심볼 속성과 같은. 이것은 .def
와 .endef
지시자 사이에
놓인다.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
심볼의 이름은 .def
지시자로 설정하고, 값과 형은 각각
.val
과 .type
으로 설정된다.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
as
지시자 .dim
, .line
, .scl
,
.size
, .tag
는 COFF를 위해서 부가적인 심볼 테 이블 정보를
생성할 수 있다.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The SOM format for the HPPA supports a multitude of symbol attributes set with
the .EXPORT
and .IMPORT
directives.
The attributes are described in HP9000 Series 800 Assembly
Language Reference Manual (HP 92432-90001) under the IMPORT
and
EXPORT
assembler directive documentation.
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated by Autobuild on July 5, 2010 using texi2html 1.82.