3.6. 베니어

베니어는 링커가 생성하고 프로그램으로 삽입되는 작은 코드 섹션입니다. armlink는 분기에 현재 상태의 분기 범위를 벗어나는 대상이 포함될 경우 베니어를 생성해야 합니다.

BL 명령어의 범위는 ARM의 경우 32MB이고, Thumb-2의 경우 16MB, Thumb의 경우 4MB입니다. 따라서 베니어는 명령어의 중간 타겟이 된 다음 PC를 대상 주소로 설정함으로써 분기 범위를 확장할 수 있습니다. ARM 및 Thumb이 혼합되면 베니어가 프로세서 상태도 변경합니다.

armlink는 다음과 같은 베니어 유형을 지원합니다.

armlink는 각 베니어에 대해 Veneer$$Code라고 하는 하나의 입력 섹션을 생성합니다. 베니어는 요구 사항을 충족시킬 수 있는 다른 기존 베니어가 없는 경우에만 생성됩니다. 두 개 입력 섹션에 동일한 대상에 대한 긴 분기가 포함되는 경우에는 한 개 베니어만 생성됩니다. 베니어는 두 섹션 모두가 도달할 수 있는 경우에만 이런 식으로 공유됩니다.

ARMv4T를 사용 중인 경우 armlink는 분기에 ARM과 Thumb 사이의 상태 변화가 포함될 때 베니어를 생성합니다. ARMv5 이상에서는 BLX 명령어가 사용됩니다.

Copyright © 2002-2008 ARM Limited. All rights reserved.ARM DUI 0206IK
Non-Confidential