4.13.1. ADRL 의사 명령어

프로그램 기준 또는 레지스터 기준 주소를 레지스터로 로드합니다. 이 의사 명령어는 ADR 명령어와 유사합니다. ADRL은 두 개의 데이터 처리 명령어를 생성하므로 ADR보다 넓은 범위의 주소를 로드할 수 있습니다.

Note

ADRL은 Thumb-2 이전 프로세서에 대해 Thumb 명령어를 어셈블할 때 사용할 수 없습니다.

구문

ADRL{cond} Rd,label

인수 설명:

cond

선택적 조건 코드입니다 (조건부 실행 참조).

Rd

로드할 레지스터입니다.

label

프로그램 기준 또는 레지스터 기준 식입니다. 자세한 내용은 레지스터 기준 및 프로그램 기준 식을 참조하십시오.

사용법

ADRL은 항상 두 개의 32비트 명령어로 어셈블됩니다. 즉, 단일 명령어만으로 주소에 도달할 수 있는 경우에도 두 번째 중복 명령어가 생성됩니다.

어셈블러가 두 개의 명령어로 주소를 생성할 수 없으면 오류가 생성되고 어셈블리가 실패합니다. 넓은 범위의 주소를 로드하는 방법에 대한 자세한 내용은 LDR 의사 명령어를 참조하십시오. 또한 레지스터에 상수 로드도 참조하십시오.

ADRL은 주소가 프로그램 기준 또는 레지스터 기준 주소이기 때문에 위치 독립적인 코드를 생성합니다.

label이 프로그램 기준 주소이면 ADRL 의사 명령어와 동일한 어셈블러 영역에 있는 주소로 평가되어야 합니다 (AREA 참조).

ADRL을 사용하여 BX 또는 BLX 명령어의 타겟을 생성하는 경우 타겟에 Thumb 명령어가 포함되어 있으면 주소의 Thumb 비트 (비트 0) 를 설정하는 것은 사용자의 책임입니다.

아키텍처 및 범위

사용 가능한 범위는 다음과 같이 사용 중인 명령어 세트에 따라 달라집니다.

ARM

바이트 또는 하프워드로 정렬된 주소의 경우, ±64KB

워드로 정렬된 주소의 경우, ±256KB

32비트 Thumb

바이트, 하프워드 또는 워드로 정렬된 주소의 경우, ±1MB

16비트 Thumb

ADRL을 사용할 수 없음

범위는 현재 명령어의 주소에서 4바이트 (Thumb 코드) 또는 2워드 (ARM 코드) 뒤에 있는 포인트를 기준으로 지정됩니다. 이 포인트를 기준으로 16바이트 이상 정렬될 경우 더욱 먼 주소 범위가 지정될 수 있습니다.

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