2.2.7. 명령어 기능

이 단원에는 다음 소단원이 포함되어 있습니다.

조건부 실행

거의 모든 ARM 명령어는 APSR의 ALU 상태 플래그 값에 대해 조건부로 실행될 수 있습니다. 일련의 명령어에 동일한 조건을 적용할 경우 성능이 향상될 수 있지만 반드시 분기를 사용하여 조건부 명령어를 건너뛰어야 하는 것은 아닙니다.

Thumb-2 이전 프로세서의 Thumb 상태에서 조건부 실행을 위한 유일한 메커니즘은 조건부 분기뿐입니다. 대부분의 데이터 처리 명령어는 ALU 플래그를 업데이트합니다. 일반적으로 명령어가 ALU 플래그 상태를 업데이트할지 여부는 지정할 수 없습니다.

Thumb-2는 IT (If-Then) 명령어와 동일한 ALU 플래그를 사용하여 조건부 실행을 위한 대체 메커니즘을 제공합니다. IT는 최대 네 개까지 다음과 같은 명령어의 조건부 실행을 제공하는 16비트 명령어입니다. 이외에도 조건부 실행을 위한 추가 메커니즘을 제공하는 여러 명령어가 있습니다.

ARM 및 Thumb-2 코드에서는 데이터 처리 명령어가 ALU 플래그를 업데이트할지 여부를 지정할 수 있습니다. 한 명령어로 설정된 플래그를 사용하여 중간에 여러 플래그 비설정 명령어가 있는 경우에도 다른 명령어의 실행을 제어할 수 있습니다.

자세한 내용은 조건부 실행을 참조하십시오.

레지스터 액세스

ARM 상태에서는 모든 명령어가 r0 ~ r14에 액세스할 수 있으며, 이중 대부분의 명령어가 pc (r15) 에 액세스할 수 있습니다. MRSMSR 명령어는 상태 레지스터의 내용을 범용 레지스터로 이동할 수 있고 이 레지스터에서 일반 데이터 처리 연산을 사용하여 내용을 조작할 수 있습니다. 자세한 내용은 MRSMSR을 참조하십시오.

Thumb-2 프로세서의 Thumb 상태에서는 유용하지 않을 경우 sp 및 pc에 대한 일부 액세스가 허용되지 않는다는 점을 제외하고 동일한 기능을 제공합니다.

Thumb-2 이전 프로세서에서는 대부분의 Thumb 명령어가 r0 ~ r7에만 액세스할 수 있고 적은 수의 명령어만 r8 ~ r15에 액세스할 수 있습니다. 레지스터 r0 ~ r7은 Lo 레지스터라고 하고 레지스터 r8 ~ r15는 Hi 레지스터라고 합니다.

인라인 배럴 시프터에 액세스

ARM 산술 논리 단위에는 시프트 및 회전 연산을 수행할 수 있는 32비트 배럴 시프터가 있습니다. 대부분의 ARM 및 Thumb-2 데이터 처리와 단일 레지스터 데이터 전송 명령어에 대한 두 번째 피연산자는 데이터 처리나 데이터 전송이 실행되기 전에 명령어의 일부로 시프트할 수 있습니다. 이 기능은 다음을 지원하며 이에 제한되지 않습니다.

  • 스케일된 주소 지정

  • 상수로 곱하기

  • 상수 생성

배럴 시프터를 사용하여 상수를 생성하는 방법에 대한 자세한 내용은 레지스터에 상수 로드를 참조하십시오.

Thumb-2 명령어는 ARM 명령어와 거의 동일한 배럴 시프터에 대한 액세스를 제공합니다.

Thumb2 이전 Thumb 명령어 세트는 별도의 명령어를 통해서만 배럴 시프터에 액세스할 수 있습니다.

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