1. 개요

    이 문서는 GNU 어셈블러 문법에서 지시자로 사용되는 의사 명령어를 간단히 정리 한 문서이다. 
    더 많은 참조를 원한다면 다음 사이트를 방문한다.
    
        http://tigcc.ticalc.org/doc/gnuasm.html#SEC70
    
2. 데이터 지시자 

    .byte   <byte1> {,<byte2>} ...      : 8  비트 데이터 
    .hword  <short1> {,<short2>} ...    : 16 비트 데이터 
    .word   <word1> {, <word2>} ...     : 32 비트 데이터 
    .ascii  "<string>"                  : 문자열 
    .asciz  "<string>"                  : 문자열 : 마지막에 자동으로 NUL 문자인 0을 추가 한다. 
    .space  size[, fill]                : 주어진 바이트 수를 할당한다. 바이트들은 0 이나 fill 값으로 채워져 있다. 

3. 상수 또는 심볼릭 관련 지시자 

    .equ <symbol name>, <value>                 : 심볼값을 정의 한다. 
    <register_name> .req <register_name>        : 레지스터의 이름을 짓는다. 
    .global <symbol>                            : 심볼을 외부 참조가 가능하게 한다 
    .set <variable_name>, <variable_value>      : 변수 값 설정
    

4. 코드 블럭 관련 지시자 
    
    .code <number_of_bits>    : 명령어 폭을 비트로 설정한다.

                                                Thumb 어셈블리에서는 16을, ARM 어셈블리에서는 32를 사용한다. 
    .section name[, "flags"]  : 새로운 코드 섹션 또는 데이터 섹션을 지정한다. 
                                섹션 명은 링크 디스크립터에 정의 되어 있어야 한다. 일반적으로 다음항목을 사용한다.
                                   .text : 코드 섹션
                                   .data : 초기화된 데이터 섹션
                                   .bss  : 초기화되지 않은 데이터 섹션. 
                                flags 는 ELF 포멧에서 
                                   a     : 섹션 할당
                                   w     : 쓰기 가능한 섹션
                                   x     : 실행 가능한 섹션


    .align alignment[, [fill][, max]]    : 주소를 2^n 바이트 단위로  정렬한다. 
                                           어셈블러는 fill나 적절한 디폴트 값을 추가하여 정렬을 맞춘다. 
                                           만약 max보다 더 많은 fill 바이트가 필요하다면 정렬되지 않는다.
                                                  
     .rept count                         : count 만큼 코드 블록을 반복한다. .endr로 끝난다.
    .endr                                : 반복 루프를 끝낸다. 

5. 매크로 

    .macro name [macargs...]       : name 이름의 어셈블러 매크로를 정의한다. 매크로 정의는 .endm으로 끝난다. 
    .endm                          : 매크로 정의를 끝낸다. 
    .exitm                         : 매크로를 빠져나온다. armasm에서의  유사하다.

6. 조건 컴파일 

    .if absolute_expression        : 컴파일 조건문 시작 .endif를 사용하여 끝낸다. 
    .ifdef symbol                  : symbol 이 정의되어 컴파일 대상에 포함되는 시작 .endif를 사용하여 끝낸다. 
    .else                          : .if와 .endif와 예외 조건이다. 
    .elseif                        : else 와 if 를 합친 것이다. 
    .endif                         : 조건부 컴파일 지정을 끝낸다(.if, .ifdef, .ifndef 참고). 
    .err                           : 에러가 있으면 어셈블리를 정지시킨다.

7. 기타 

    .include "<filename>"          : 지정한 소스 파일을 포함한다

8. GNU ASM 과 ARM ASM 의 대치표

    .ascii      : DCB
    .byte       : DCB
    .hword      : DCW
    .word       : DCD
    .space      : SPACE
    .set        : SETA
    
    .equ        : EQU
    .req        : RN
    
    .code       : CODE16,CODE32
    .sectoin    : AREA
    .balign     : ALAIN
    
    .macro      : MACRO
    .endm       : MEND
    .exitm      : MEXIT
    
    .if         : IF     
    .else       : ELSE
    .endif      : ENDIF
    .include    : INCLUDE


출 처 : http://forum.falinux.com/zbxe/index.php?document_srl=550700&mid=lecture_tip


+ Recent posts