7.5.12. FUNCTION 또는 PROC

FUNCTION 지시어는 함수의 시작을 표시합니다. PROCFUNCTION의 동의어입니다.

구문

label FUNCTION [{reglist1} [, {reglist2}]]

인수 설명:

reglist1

호출 수신자가 저장하는 ARM 레지스터의 선택적 목록입니다. reglist1이 없을 경우 디버거는 레지스터 사용을 검사할 때 AAPCS가 사용 중이라고 간주합니다.

reglist2

호출 수신자가 저장하는 VFP 레지스터의 선택적 목록입니다.

사용법

FUNCTION을 사용하여 함수의 시작을 표시합니다. 어셈블러는 FUNCTION을 사용하여 ELF에 대한 DWARF 호출 프레임 정보를 생성할 때 함수의 시작을 확인합니다.

FUNCTION은 표준 프레임 주소를 r13 (sp) 으로 설정하고 프레임 상태 스택을 빈 상태로 설정합니다.

FUNCTION 지시어에는 대응하는 ENDFUNC 지시어가 있어야 합니다. FUNCTIONENDFUNC 쌍은 중첩될 수 없으며, PROC 또는 ENDP 지시어를 포함할 수 없습니다.

사용자 고유의 디버거를 사용하는 경우 선택적 reglist 매개변수를 사용하여 대체 프로시저 호출 표준에 대해 디버거에 알릴 수 있습니다. 일부 디버거에서는 이 기능이 지원하지 않습니다. 자세한 내용은 디버거 설명서를 참조하십시오.

FRAME ADDRESS ~ FRAME STATE RESTORE도 참조하십시오.

Note

FUNCTION은 자동으로 워드 단위 (Thumb의 경우 하프워드 단위) 로 정렬되도록 하지 않습니다. 정렬이 필요하면 ALIGN을 사용합니다. 그렇지 않으면 호출 프레임이 함수의 시작을 가리키지 않을 수 있습니다. 자세한 내용은 ALIGN을 참조하십시오.

예제

        ALIGN      ; ensures alignment
dadd    FUNCTION   ; without the ALIGN directive, this might not be word-aligned
        EXPORT  dadd
        PUSH       {r4-r6,lr}    ; this line automatically word-aligned
        FRAME PUSH {r4-r6,lr}
        ; subroutine body
        POP        {r4-r6,pc}
        ENDFUNC
func6   PROC {r4-r8,r12},{D1-D3} ; non-AAPCS-conforming function
        ...
        ENDP
Copyright © 2002-2008 ARM Limited. All rights reserved.ARM DUI 0204IK
Non-Confidential