4.2.10. RFE

예외에서 복귀

구문

RFE{addr_mode}{cond} Rn{!}

인수 설명:

addr_mode

다음 중 하나입니다.

IA

각 전송 후에 주소를 증가시킵니다 (전체 내림차순 스택).

IB

각 전송 전에 주소를 증가시킵니다 (ARM에만 해당).

DA

각 전송 후에 주소를 감소시킵니다 (ARM에만 해당).

DB

각 전송 전에 주소를 감소시킵니다.

addr_mode가 생략된 경우 기본적으로 각 전송 후에 주소를 증가시킵니다.

cond

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

Note

cond는 위의 IT 명령어를 통해 Thumb-2 코드에서만 사용할 수 있습니다. 이는 ARM의 무조건 명령어입니다.

Rn

기준 레지스터를 지정합니다. Rn에 r15를 사용하면 안 됩니다.

!

선택적 접미사입니다. ! 기호가 있을 경우 최종 주소가 Rn에 다시 기록됩니다.

사용법

이전에 SRS 명령어 (SRS 참조) 를 사용하여 반환 상태를 저장한 경우 RFE를 사용하여 예외에서 복귀할 수 있습니다. Rn은 대개 반환 상태 정보를 저장한 sp입니다.

Thumb-2EE에서는 기준 레지스터의 값이 0일 경우 실행이 HandlerBase - 4에서 NullCheck 처리기로 분기됩니다.

연산

Rn에 들어 있는 주소와 그 다음 주소에서 pc와 CPSR을 로드하고, 경우에 따라 Rn을 업데이트합니다.

메모

RFE는 pc에 주소를 기록합니다. 이 주소는 다음과 같이 예외 반환 후 사용 중인 명령어 세트를 기준으로 올바로 정렬되어야 합니다.

  • ARM으로 복귀할 경우 pc에 기록된 주소가 워드로 정렬되어야 합니다.

  • Thumb-2로 복귀할 경우 pc에 기록된 주소가 하프워드로 정렬되어야 합니다.

  • Jazelle®로 복귀할 경우 pc에 기록된 주소의 정렬에 대한 제한이 없습니다.

이러한 규칙을 위반하면 예상할 수 없는 결과가 발생합니다. 그러나 유효한 예외 엔트리 메커니즘 후에 이 명령어를 사용하여 복귀한 경우 소프트웨어에서 특별한 예방 조치를 취하지 않아도 됩니다.

주소가 워드로 정렬되지 않은 경우 RFERn의 최하위 2비트를 무시합니다.

RFE가 생성하는 메모리의 개별 워드에 액세스하는 시간 순서는 아키텍처 면에서 정의되지 않습니다. 따라서 액세스 순서가 중요한, 메모리에 매핑된 I/O 위치에 대해서는 이 명령어를 사용하면 안 됩니다.

mode에 의해 사용자 모드가 지정될 경우 CPSR에 쓰기에 대해 일반 규칙이 적용됩니다. 자세한 내용은 ARM 아키텍처 참조 문서를 참조하십시오.

mode에 의해 모니터 모드가 지정될 경우 예상할 수 없는 결과가 발생합니다 (SMC 참조).

아키텍처

이 ARM 명령어는 ARMv6 이상에서 사용할 수 있습니다.

이 32비트 Thumb 명령어는 ARMv7-M 프로필을 제외하고 ARMv6T2 이상에서 사용할 수 있습니다.

이 명령어의 16비트 버전은 없습니다.

예제

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