| |||
| Home > 스캐터 로딩 설명 파일 사용 > 스캐터 로딩 설명 파일의 형식적 구문 > 실행 영역 설명 | |||
실행 영역에는 다음 구성요소가 있습니다.
이름
기본 주소(절대 또는 상대)
선택적 최대 크기 지정
실행 영역의 속성을 지정하는 특성
하나 이상의 입력 섹션 설명(이 실행 영역으로 배치된 모듈)
Figure 5.7에서는 일반적인 실행 영역 설명의 구성요소를 보여 줍니다.
BNF 구문은 다음과 같습니다.
execution_region_description::=exec_region_name(base_address| "+"offset) [attribute_list] [max_size| "-"length] "{"input_section_description* "}"
인수 설명:
exec_region_name실행 영역을 명명합니다.
base_address영역의 개체가 링크될 주소를 지정합니다. 는
워드로 정렬되어야 합니다.base_address
+offset기본 주소가 선행 실행 영역의 끝을 벗어나는 바이트라고
설명합니다. offset의 값은
4로 나눈 나머지가 0이어야 합니다.offset
선행 실행 영역이 없는 경우(즉, 로드 영역의 첫 번째 실행 영역인 경우) +은
기본 주소가 로드 영역을 포함하는 기준 뒤의 offset 바이트에서
시작됨을 의미합니다. offset
+ 형식이
사용되고 주변 로드 영역에 offsetRELOC 특성이 있으면 실행 영역이 RELOC 특성을
상속합니다. 그러나 고정 가
사용되는 경우 이후에 base_address이 나타나도 offsetRELOC 특성이
상속되지 않습니다.
attribute_list이 옵션은 실행 영역 내용의 속성을 지정합니다.
ABSOLUTE절대 주소. 영역의 실행 주소는 기준 지정자로 지정됩니다.
PI위치 독립적
OVERLAY겹쳐짐
FIXED고정
주소. 영역의 로드 주소 및 실행 주소는 모두 기준 지정자로 지정됩니다(영역은 루트 영역임). 자세한 내용은 루트 실행 영역 만들기를 참조하십시오. 기준 지정자는
절대 기본 주소 또는 +0의 오프셋이어야 합니다.
ALIGN alignment실행 영역의 정렬 제한을 4에서 로
늘립니다. alignment는 2의
양의 제곱이어야 합니다. 실행 영역에 alignment가
있으면 base_address로 정렬되어야
합니다. 실행 영역에 alignment이
있으면 링커에서 영역의 계산된 기본 주소를 +offset 단위로
정렬합니다.alignment
EMPTY실행 영역에서 주어진 길이의 빈 메모리 블록(일반적으로 힙이나 스택에서 사용)을 예약합니다. 자세한 내용은 빈 영역 예약을 참조하십시오.
ZEROPAD0으로 초기화된 섹션은 0으로 채워진 블록으로 ELF 파일에 작성되므로 런타임에 0으로 채워질 필요가 없습니다.
시뮬레이션과 같은 특정 상황에서는 0으로 초기화되는 루프에서 긴 시간을 보내는 것보다 이 특성을 사용하는 것이 유용합니다.
PADVALUE패딩의
값을 정의합니다. PADVALUE를 지정하면 값을 제공해야 합니다. 예를 들면 다음과
같습니다.
EXEC 0x10000 PADVALUE 0xffffffff EMPTY ZEROPAD 0x2000
이 값을 사용하면 0xffffffff로 가득 차고 크기가 0x2000인
영역이 만들어집니다.
PADVALUE의 크기는 1워드여야 합니다. 로드 영역의 PADVALUE 특성은
무시됩니다.
FILL값이
포함된 링커 생성 영역을 만듭니다. FILL을 지정하면 값을 제공해야 합니다
(예: FILL 0xffffffff). FILL 특성은 EMPTY ZEROPAD
PADVALUE 조합을 대체합니다.
시뮬레이션과 같은 특정 상황에서는 0으로 초기화되는 루프에서 긴 시간을 보내는 것보다 이 특성을 사용하는 것이 유용합니다.
NOCOMPRESS압축하면 안 됩니다.
UNINIT0으로 초기화되면 안 됩니다.
max_size영역에 바이트보다
큰 값이 할당된 경우 오류를 생성하도록 링커에 지시하는 선택적 숫자입니다.max_size
-length길이가 음수 값으로 제공되면 는
영역의 마지막 주소로 지정됩니다. 일반적으로 base_addressEMPTY와 함께 사용되어 메모리에서
아래쪽으로 늘어나는 스택을 나타냅니다. 자세한 내용은 빈 영역 예약을 참조하십시오.
input_section_description입력 섹션의 내용을 지정합니다. 자세한 내용은 입력 섹션 설명을 참조하십시오.
실행 영역의 속성을 지정하는 경우 다음 사항에 유의해야 합니다.
실행
영역은 ABSOLUTE, PI 또는 OVERLAY 특성
중 하나여야 합니다. 특성을 지정하지 않으면 ABSOLUTE가 실행 영역의 기본
특성입니다.
기준 지정자의 + 형식을
사용하는 실행 영역은 선행 실행 영역의 특성(또는 로드 영역의 첫 번째 실행 영역인 경우 포함하는 로드 영역의 특성)을 상속하거나 offsetABSOLUTE 특성을
갖습니다.
루트 실행 영역만 ZEROPAD 특성을 사용하여 0으로
초기화될 수 있습니다. 루트가 아닌 실행 영역에 ZEROPAD 특성을 사용하면 경고가
생성되고 특성이 무시됩니다.
RELOC 특성은 실행 영역에 대해 명시적으로 지정될
수 없습니다. 실행 영역은 로드 영역에서 특성을 상속하는 방법으로만 RELOC 될
수 있습니다.
기준 지정자의 + 형식을
사용하는 실행 영역은 자체 특성(상속을 재정의하는 offsetABSOLUTE 특성이 아닌 다른
특성)을 가질 수 없습니다. 시작 위치를 변경하지 않고 영역을 ABSOLUTE로
설정하려면 +0 ABSOLUTE 조합을 사용하십시오.
PI 또는 OVERLAY로
지정되는(또는 RELOC 특성을 상속한) 실행 영역은 겹친 주소 범위를 가질 수
있습니다. 링커에서 ABSOLUTE 및 FIXED 실행
영역에 겹친 주소 범위를 사용하면 오류가 발생합니다.
RW 데이터 압축은 기본적으로 사용됩니다. NOCOMPRESS 키워드를
사용하면 최종 이미지에서 실행 영역을 압축하면 안 된다는 것을 지정할 수 있습니다.
UNINIT은 실행 영역의 ZI 출력 섹션을 0으로
초기화하면 안 된다는 것을 지정합니다. 초기화되지 않은 데이터나 메모리 매핑된 I/O를 포함하는 실행 영역을 만들려면
이 옵션을 사용합니다.
OVERLAY 특성과 +0의
기본 오프셋을 가진 연속적 실행 영역에 동일한 기본 주소가 제공됩니다.