.ascii "<string>"
: 데이터와 같은 문자열을 어셈블리에 삽입한다. armasm의 DCB와 동일한 기능을 가진다.

 .asciz "<string>"
: .ascii와 동일한 기능을 가지지만 0 바이트를 가진 문자열이 나온다.

 .balign <power_of_2> {,<fill_value>{,<max_padding>}}
: 주소를 <power_of_2> 바이트로 정렬한다. 어셈블러는 <fill_value>나 적절한 디폴트 값을 추가하여 정렬을 맞춘다. 만약 <max_padding>보다 더 많은 fill 바이트가 필요하다면 정렬되지 않을 것이다. 이것은 armasm의 ALAIN과 유사하다.

 .byte <byte1> {,<byte2>} ...
: 데이터와 같은 바이트값을 어셈블리에 삽입한다. armasm의 DCB와 동일한 기능을 가진다.

 .code <number_of_bits>
: 명령어 폭을 비트로 설정한다. Thumb 어셈블리에서는 16을, ARM 어셈블리에서는 32를 사용한다. armasm에서의 CODE16과 CODE32와 유사하다.

 .else
: .if와 .endif와 함께 사용한다. armasm에서의 ELSE와 유사하다.

 .end
: 어셈블리 파일의 끝을 나타낸다. 보통 생략 가능하다.

 .endif
: 조건부 컴파일 코드 블록을 끝낸다(.if, .ifdef, .ifndef 참고). armasm에서의 ENDIF와 유사하다.

 .endm
: 매크로 정의를 끝낸다. armasm에서의 MEND와 유사하다.

 .endr
: 반복 루프를 끝낸다. armasm에서의 WEND와 유사하다.

 .equ <symbol name>, <value>
: 이 지시어는 심볼값을 설정한다. armasm에서의 EQU와 유사하다.

 .err
: 에러가 있으면 어셈블리를 정지시킨다.

 .exitm
: 매크로를 빠져나온다. armasm에서의 MEXIT와 유사하다.

 .global <symbol>
: 이 지시어는 심볼을 외부 링크로 제공한다. armasm에서의 EXPORT와 유사하다.

 .hword <short1> {,<short2>} ...
: armasm에서의 DCW처럼 데이터로 16비트값 목록을 어셈블리에 삽입한다.

 .if <logical_expression>
: 조건부 코드 블록을 생성한다. 이 블록은 .endif를 사용하여 끝낸다. armasm에서의 IF와 유사하다.

 .ifdef <symbol>
: 만약 <symbol>이 정의되어 있다면 코드 블록을 포함한다. 이 블록은 .endif로 끝난다.

 .include "<filename>"
: 지정한 소스 파일을 포함한다. armasm에서의 INCLUDE 또는 C에서의 #include와 유사하다.

 .irp <param> {, <val_1>{, <var_2>} ...
: 값 목록에서 각 값에 대해 코드 블록이 반복된다. .endr 지시어를 사용하여 블록의 끝을 표시한다. 반복되는 코드 블록에서 값 목록 안에 연관된 값을 치환하기 위해서는 \<param>을 사용한다.

 .macro <name> {<arg_1>}{, <arg_1>} ... {, <arg_k>}
: k 파라미터를 가진 <name>이라는 이름의 어셈블러 매크로를 정의한다. 매크로 정의는 .endm으로 끝난다. 초기에 매크로에서 빠져나오기 위해서는 .exitm을 사용한다. 이 지시어는 armasm에서의 MACRO, MEND, MEXIT와 유사하다. 더미 매크로 파라미터 앞에는 \이 나와야 한다. 예를 들어, 다음과 같다.

.macro SHIFTLEFT a, b
           .if \b < 0
              MOV \a, \a, ASR #-\b
              .exitm
           .endif
           MOV \a, \a, LSL #\b
.endm

 .rept <number_of_times>
: 주어진 수만큼 코드 블록을 반복한다. .endr로 끝난다.

 <register_name> .req <register_name>
: 이 지시어는 레지스터의 이름을 짓는다. 오른쪽에  숫자가 아니라 이름이 나온다는 것을 제외하면 armasm에서의 RN과 유사하다. 예를 들면 acc.req r0이다.

 .sectoin <section_name> {, "<flags>"}
: 새로운 코드 색션 또는 데이터 색션을 시작한다. 보통 코드 색션 .text, 초기화된 데이터 색션 .data, 초기화되지 않은 데이터 색션 .bss를 호출해야 한다. 이것들은 디폴트 플래그를 가지고 있으며 링커는 이 디폴트 이름들을 이해하고 있다. 이 지시어는 armasm 지시어 AREA와 유사하다. 표 A.19는 ELF 포멧 파일을 위한 <flags>문자열을 나타내는데 사용되는 문자이다.

[표 A.19] ELF 포멧 파일을 위한 .section 플래그

플래그

a

섹션 할당

w

쓰기 가능한 섹션

x

실행 가능한 섹션


 .set <variable_name>, <variable_value>
: 이 지시어는 변수의 값을 설정한다. armasm에서의 SETA와 유사하다.

 .space <number_of_bytes> {, <fill_byte>}
: 주어진 바이트 수를 할당한다. 바이트들은 0이나 규정된 <fill_byte>로 채워져 있다. armasm에서의 SPACE와 유사하다.

 .word <word1> {, <word2>} ...
: armasm에서의 DCD와 같이 데이터로 32비트 워드값 목록들을 어셈블리에 삽입한다.


+ Recent posts