7.5.1. FRAME ADDRESS

FRAME ADDRESS 지시어는 이후 명령어의 표준 프레임 주소를 계산하는 방법을 설명합니다. 이 지시어는 FUNCTIONENDFUNC 또는 PROCENDP 지시어가 있는 함수 내에서만 사용할 수 있습니다.

구문

FRAME ADDRESS reg[,offset]

인수 설명:

reg

표준 프레임 주소의 기반이 될 레지스터로, 함수에서 별도의 프레임 포인터를 사용하지 않을 경우 sp입니다.

offset

reg를 기준으로 한 표준 프레임 주소의 오프셋으로, offset이 0일 경우 생략할 수 있습니다.

사용법

코드에서 표준 프레임 주소의 기반이 되는 레지스터를 변경하거나 레지스터를 기준으로 한 표준 프레임 주소의 오프셋을 변경할 경우 FRAME ADDRESS를 사용합니다. FRAME ADDRESS는 표준 프레임 주소의 계산을 변경하는 명령어 바로 다음에 사용해야 합니다.

Note

코드에서 단일 명령어를 사용하여 레지스터를 저장하고 스택 포인터를 변경하는 경우 FRAME ADDRESSFRAME SAVE를 둘 다 사용하는 대신 FRAME PUSH를 사용할 수 있습니다 (FRAME PUSH 참조).

코드에서 단일 명령어를 사용하여 레지스터를 로드하고 스택 포인터를 변경하는 경우 FRAME ADDRESSFRAME RESTORE를 둘 다 사용하는 대신 FRAME POP을 사용할 수 있습니다 (FRAME POP 참조).

예제

_fn     FUNCTION        ; CFA (Canonical Frame Address) is value
                        ; of sp on entry to function
        PUSH    {r4,fp,ip,lr,pc}
        FRAME PUSH {r4,fp,ip,lr,pc}
        SUB     sp,sp,#4            ; CFA offset now changed
        FRAME ADDRESS sp,24         ; - so we correct it
        ADD     fp,sp,#20
        FRAME ADDRESS fp,4          ; New base register
        ; code using fp to base call-frame on, instead of sp
Copyright © 2002-2008 ARM Limited. All rights reserved.ARM DUI 0204IK
Non-Confidential