2.2.6. 명령어 세트 개요

모든 ARM 명령어의 길이는 32비트입니다. 명령어는 워드로 정렬된 채 저장되므로 ARM 상태에서 명령어 주소의 최하위 2비트는 항상 0입니다.

Thumb, Thumb-2 및 Thumb-2EE 명령어의 길이는 16비트 또는 32비트입니다. 명령어는 하프워드로 정렬된 채 저장됩니다. 일부 명령어는 주소의 최하위 비트를 사용하여 분기되는 코드가 Thumb 코드인지 아니면 ARM 코드인지를 확인합니다.

Thumb-2가 도입되기 전에 Thumb 명령어 세트는 ARM 명령어 세트의 제한된 하위 기능 세트로 제한되었으며 거의 모든 Thumb 명령어가 16비트였습니다. Thumb-2 명령어 세트 기능은 ARM 명령어 세트 기능과 거의 같습니다.

ARMv6 이상에서는 모든 ARM 및 Thumb 명령어가 리틀엔디안입니다.

ARM 및 Thumb 명령어 구문에 대한 자세한 내용은 Chapter 4 ARM 및 Thumb 명령어를 참조하십시오.

ARM 및 Thumb 명령어는 다음과 같은 여러 기능 그룹으로 분류할 수 있습니다.

분기 및 제어 명령어

이러한 명령어를 사용하면 다음을 수행할 수 있습니다.

  • 서브루틴으로 분기

  • 루프 형성을 위한 역방향 분기

  • 조건부 구조체에서 정방향 분기

  • 다음의 최대 네 개 명령어를 분기 없는 조건 명령어로 지정

  • ARM과 Thumb 사이에서 프로세서 상태 전환

데이터 처리 명령어

이러한 명령어는 범용 레지스터에서 작동하며, 두 레지스터의 내용에 대해 더하기, 빼기 또는 비트 단위 논리와 같은 연산을 수행하고 결과를 세 번째 레지스터에 배치합니다. 이러한 명령어는 단일 레지스터 내의 값을 연산하거나 레지스터 값과 명령어 내에 제공된 상수 (즉치값) 를 연산할 수도 있습니다.

Long 곱하기 명령어는 두 개의 레지스터에 64비트 결과를 제공합니다.

레지스터 로드 및 저장 명령어

이러한 명령어는 단일 레지스터 값을 메모리에서 로드하거나 메모리에 저장하며, 32비트 워드, 16비트 하프워드 또는 8비트 부호 없는 바이트를 로드하거나 저장할 수 있습니다. 바이트 및 하프워드 로드는 32비트 레지스터를 채우도록 부호 확장 또는 0 확장됩니다.

이외에도 64비트 더블워드 값을 두 개의 32비트 레지스터에 로드하거나 저장할 수 있는 몇 가지 명령어가 정의되어 있습니다.

다중 레지스터 로드 및 저장 명령어

이러한 명령어는 범용 레지스터의 하위 세트를 메모리에서 로드하거나 메모리에 저장합니다. 이러한 명령어에 대한 자세한 내용은 다중 레지스터 로드 및 저장 명령어를 참조하십시오.

상태 레지스터 액세스 명령어

이러한 명령어는 상태 레지스터와 범용 레지스터 간에 내용을 이동합니다.

보조 프로세서 명령어

이러한 명령어는 ARM 아키텍처를 확장하는 일반적인 방법을 지원합니다.

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