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

6. 표현

표현(expression)은 주소나 수치 값을 명시한다. 화이트 공백 문자가 먼저 나오거나/나오고 표현이 뒤따를 것이다.

The result of an expression must be an absolute number, or else an offset into a particular section. If an expression is not absolute, and there is not enough information when as sees the expression to know its section, a second pass over the source program might be necessary to interpret the expression--but the second pass is currently not implemented. as aborts with an error message in this situation.


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

6.1 텅 빈 표현

텅 비어 있는 표현은 값을 가지고 있지 않다. 그것은 화이트 공백문자이거나 널 이다. 절대적인 표현이 요구되는 곳이라면, 여러분은 표현을 생략하고 as는 절 대값 0을 가정할 것이다. 이것은 다른 어셈블러들과 호환되는 부분이다.


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

6.2 정수 표현

정수표현은 조작자(operator)에 의해 구분되는 하나이상의 인자이다.


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

6.2.1 인자

인자들은 심볼, 숫자들 이거나 보조표현이다. 다른 문맥상에서 인자는 가끔 "산술 피연산자(arithmetic operands)" 라고 불리운다. 이 메뉴얼에서는 기계 어에서의 "명령 피연산자(instruction operands)"와의 혼동을 방지하기 위해서 "표현"의 어느 부분을 참조하는 것을 "인자(argument)"라고 사용한다. "피연산 자(operand)"는 기계 명령 피연산자에서 사용하도록 절약하자.

심볼은 text, data, bss, absolute(절대) 또는 정의되지 않은 어느섹션을 { section NNN}으로 계산한다. NNN은 부호가 있는 32비트 정수이다.

숫자는 보통 정수이다.

숫자는 flonum 이나 bignum이 될 수 있다. 이 경우에, 여러분들이 단지 하위 32비트만을 사용하기를 원한다면, as는 그것을 정수인 32비트로 취급한다. 여 러분들은 이 상황에서 다른 어셈블러들과의 호환성을 위해서 정수조작 명령도 사용할 수 있다.

보조표현은 왼쪽 괄호 `('가 나오고, 정수표현이 따라오고 오른쪽 괄호 `)'가 따라 오는 형태이거나 인자 앞에 접두사 조작자가 따라오는 형태이다.


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

6.2.2 조작자 (operators)

조작자+%같은 산술 기능을 하는 것이다. 접두사 조작자는 인자 앞 에 온다. 중위 조작자는 인자들 가운데 온다. 조작자가 앞에 나오고/나오거나 빈공백이 따라 올 것이다.


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

6.2.3 접두사 조작자

as는 아래에 나오는 접두사 조작자들을 가진다. 그것들은 각자 절대적인 하나 씩의 인자를 취한다.

-

Negation. Two's complement negation.

~

Complementation. Bitwise not.


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

6.2.4 중위 조작자

중위 조작자는 두개의 인자를 취한다. 조작자는 우선순위를 가지는 데, 같은 우선순위일 경우에는 왼쪽에서 오른쪽으로 수행된다. +- 는 별문제로 하고, 양쪽 인자는 절대적이어야 하고, 결과도 절대적이어야 한다.

  1. 높은 우선순위
    *

    Multiplication.

    /

    Division. Truncation is the same as the C operator `/'

    %

    Remainder.

    <
    <<

    Shift Left. Same as the C operator `<<'.

    >
    >>

    Shift Right. Same as the C operator `>>'.

  2. 중간 우선순위
    |

    Bitwise Inclusive Or.

    &

    Bitwise And.

    ^

    Bitwise Exclusive Or.

    !

    Bitwise Or Not.

  3. 낮은 우선 순위
    +

    더하기. 둘 중 하나의 인자가 절대값이라면 그 결과는 다른 인자의 섹션을 가질 것이다. 둘 중 하나의 인자가 pass1 이 거나 정의되지 않은 것이라면 그 결과는 pass1이다. 다른 경 우 + 는 틀린 게 된다.

    -

    빼기. 오른쪽 인자가 절대값이라면 그 결과는 왼쪽 인자의 섹션을 가질 것이다. 둘 중 하나의 인자가 pass1이면 그 결 과도 pass1이다. 둘 중 하나의 인자가 정의되지 않은 것이라 면 그 결과는 다른 섹션이 된다. 둘다 같은 섹션이라면 결과 는 text, data 나 bss 중 하나의 섹션으로 제공되는 절대치 이다. 다른 경우는 틀린 것이 된다.

덧셈의 규칙은 주소에서 옵셋을 보태는 것에만 의미가 있을 것이다. 여러분들 은 두개의 인자중 하나에서 하나의 정의된 섹션만을 가질 수 있다. 마찬가지로, 두개의 다른 섹션에서 뺄셈을 할 수 없다.


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

This document was generated by Autobuild on March, 29 2007 using texi2html 1.76.