5.3.6. 빈 영역 예약

실행 영역 스캐터 로딩 설명에서 EMPTY 특성을 사용하여 스택의 빈 메모리 블록을 예약할 수 있습니다.

메모리 블록은 로드 영역의 일부를 이루지는 않지만 실행 시간에 사용을 위해 할당됩니다. 메모리 블록은 더미 ZI 영역으로 생성되기 때문에 링커에서 다음 심볼을 사용하여 액세스합니다.

길이가 음수 값으로 제공되면 주소는 영역의 마지막 주소로 지정됩니다. 이것은 절대 주소여야 하며 상대 주소는 안 됩니다. 예를 들어, Example 5.9에 표시된 실행 영역 정의 STACK 0x800000 EMPTY -0x100000x7F0000 주소에서 시작하고 0x800000 주소에서 끝나는 STACK이라고 하는 영역을 정의합니다.

Note

EMPTY 실행 영역에 대해 만들어진 더미 ZI 영역은 런타임에 0으로 초기화되지 않습니다.

주소가 상대적(+n) 형식이고 길이가 음수이면 링커는 오류를 생성합니다.

Example 5.9. 스택에 대한 영역 예약

LR_1 0x80000                          ; load region starts at 0x80000   
{
    STACK 0x800000 EMPTY -0x10000     ; region ends at 0x800000 because of the
                                      ; negative length. The start of the region
                                      ; is calculated using the length.
    {
                                      ; Empty region used to place stack
    }
    HEAP +0 EMPTY 0x10000             ; region starts at the end of previous
                                      ; region. End of region calculated using
                                      ; positive length
    {
                                      ; Empty region used to place heap
    }
                                      ; rest of scatter description...
}

Figure 5.10은 이 예제의 다이어그램 표현입니다.

Figure 5.10. 스택에 대한 영역 예약

스택에 대한 영역 예약

이 예제에서 링커는 다음 심볼을 생성합니다.

Image$$STACK$$ZI$$Base      = 0x7f0000
Image$$STACK$$ZI$$Limit     = 0x800000
Image$$STACK$$ZI$$Length    = 0x1000
Image$$HEAP$$ZI$$Base       = 0x800000
Image$$HEAP$$ZI$$Limit      = 0x810000
Image$$HEAP$$ZI$$Length     = 0x1000

Note

EMPTY 특성은 실행 영역에만 적용됩니다. 링커에서 경고를 생성하고 로드 영역 정의에 사용된 EMPTY 특성을 무시합니다.

링커가 EMPTY 영역에 대해 사용된 주소 공간이 다른 실행 영역과 일치하지 않음을 확인합니다.

Copyright © 2002-2006 ARM Limited. All rights reserved.ARM DUI 0206GK
Non-Confidential