4.2.1. 영역 관련 심볼

영역 관련 심볼은 링커에서 이미지를 만들 때 생성됩니다. Table 4.1에는 링커가 이미지의 모든 실행 영역에 대해 생성하는 심볼이 나와 있습니다.

Table 4.1. 영역 관련 링커 심볼

심볼설명
Load$$region_name$$Base영역의 로드 주소
Image$$region_name$$Base영역의 실행 주소
Image$$region_name$$Length바이트로 표시되는 실행 영역 길이(4의 배수)
Image$$region_name$$Limit실행 영역의 끝을 초과하는 바이트의 주소
Image$$region_name$$RO$$Base이 영역에 있는 RO 출력 섹션의 실행 주소
Image$$region_name$$RO$$Length바이트로 표시되는 RO 출력 섹션의 길이(4의 배수)
Image$$region_name$$RO$$Limit실행 영역에 있는 RO 출력 섹션의 끝을 초과하는 바이트의 주소
Image$$region_name$$RW$$Base이 영역에 있는 RW 출력 섹션의 실행 주소
Image$$region_name$$RW$$Length바이트로 표시되는 RW 출력 섹션의 길이(4의 배수)
Image$$region_name$$RW$$Limit실행 영역에 있는 RW 출력 섹션의 끝을 초과하는 바이트의 주소
Image$$region_name$$ZI$$Base이 영역에 있는 ZI 출력 섹션의 실행 주소
Image$$region_name$$ZI$$Length바이트로 표시되는 ZI 출력 섹션의 길이(4의 배수)
Image$$region_name$$ZI$$Limit실행 영역에 있는 ZI 출력 섹션의 끝을 초과하는 바이트의 주소

스캐터 로딩을 사용하지 않는 경우 링커에서 다음과 같은 region_name 값을 사용합니다.

ZI 출력 섹션을 포함하는 모든 실행 영역에 대해 링커에서 $$ZI$$이 포함된 추가 심볼을 생성합니다.

Note

  • 이미지의 ZI 출력 섹션은 정적으로 생성되지 않고 런타임에 동적으로 자동 생성됩니다. 그러므로 ZI 출력 섹션에 대한 로드 주소 심볼은 없습니다.

  • 섹션 관련 심볼보다 영역 관련 심볼을 우선으로 사용하는 것이 좋습니다.

스캐터 로딩 설명 파일 사용

스캐터 로딩을 사용하는 경우 설명 파일에서 이미지에 있는 모든 실행 영역의 이름을 지정하고 해당 로드 및 실행 주소를 제공합니다.

설명 파일에서 스택과 힙을 둘 다 정의하면 링커는 특수 스택 및 힙 심볼도 생성합니다.

자세한 내용은 Chapter 5 스캐터 로딩 설명 파일 사용을 참조하십시오.

ZI 영역 위에 스택 및 힙 배치

영역 관련 심볼을 사용하는 한 가지 흔한 예는 힙을 ZI 영역 바로 위에 배치하는 것입니다. Example 4.1에는 타겟이 조정된 __user_initial_stackheap() 버전을 어셈블리 언어로 만드는 방법이 나와 있습니다. 예제는 사용자가 ARM C 라이브러리에서 기본 단일 영역 메모리 모델을 사용한다고 가정합니다. 자세한 내용은 RealView Compilation Tools 버전 3.0 컴파일러 및 라이브러리 설명서의 C 및 C++ 라이브러리에 대해 설명하는 장에서 __user_initial_stackheap() 설명을 참조하십시오. C로 이 작업을 수행하는 예를 보려면 RealView Compilation Tools 버전 3.0 개발자 설명서의 프로세서 예외 처리에 대해 설명하는 장에서 retarget.c 예제 설명도 참조하십시오.

Example 4.1. ZI 영역 위에 스택 및 힙 배치

    EXPORT __user_initial_stackheap
    IMPORT ||Image$$region_name$$ZI$$Limit||
__user_initial_stackheap
    LDR r0, =||Image$$region_name$$ZI$$Limit||
    MOV pc, lr
Copyright © 2002-2006 ARM Limited. All rights reserved.ARM DUI 0206GK
Non-Confidential