4.3.3. SUBS pc, lr

스택을 팝하지 않고 예외 반환

Note

이 명령어는 Thumb-2에서 특별한 경우의 명령어입니다. ARM 코드에서 동일한 명령어를 ADD, SUB, RSB, ADC, SBC 및 RSC에서 설명하는 SUB 명령어의 일반 형식으로 사용할 수 있습니다.

구문

SUBS{cond} pc, lr, #imm

인수 설명:

imm

즉치 상수입니다. Thumb-2 코드에서는 범위 0 ~ 255로 제한되고 ARM 코드에서는 유연한 두 번째 피연산자입니다. 자세한 내용은 유연한 두 번째 피연산자를 참조하십시오.

cond

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

사용법

스택에 반환 상태가 없는 경우 SUBS pc, lr을 사용하여 예외에서 복귀할 수 있습니다.

SUBS pc, lr은 링크 레지스터에서 값을 빼고 pc에 결과를 로드한 후 SPSR을 CPSR로 복사합니다.

메모

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

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

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

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

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

Thumb-2에서 MOVS pc, lr 기호는 SUBS pc, lr, #0의 동의어입니다.

아키텍처

이 ARM 명령어는 모든 버전의 ARM 아키텍처에서 사용할 수 있습니다.

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

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

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