7.7.1. ARM, THUMB, THUMBX, CODE16 및 CODE32

ARM 지시어와 CODE32 지시어는 같습니다. 이 두 지시어는 UAL 또는 Thumb-2 이전 ARM 어셈블러 언어 구문을 사용하여 후속 명령어를 ARM 명령어로 해석하도록 어셈블러에 지시합니다.

THUMB 지시어는 UAL 구문을 사용하여 후속 명령어를 Thumb 명령어로 해석하도록 어셈블러에 지시합니다.

THUMBX 지시어는 UAL 구문을 사용하여 후속 명령어를 Thumb-2EE 명령어로 해석하도록 어셈블러에 지시합니다.

CODE16 지시어는 UAL 이전 어셈블리 언어 구문을 사용하여 후속 명령어를 Thumb 명령어로 해석하도록 어셈블러에 지시합니다.

또한 필요한 경우 이들 지시어는 최대 3바이트의 패딩을 삽입하여 다음 워드 경계에 맞게 정렬 (ARM) 하거나, 최대 1바이트의 패딩을 삽입하여 다음 하프워드 경계에 맞게 정렬 (Thumb 또는 Thumb-2EE) 합니다.

구문

ARM
THUMB
THUMBX
CODE16
CODE32

사용법

다양한 명령어 세트를 사용하는 코드가 포함된 파일에서 다음과 같이 합니다.

  • ARM 지시어가 ARM 코드 앞에 와야 합니다. CODE32ARM의 동의어입니다.

  • THUMB 지시어가 UAL 구문으로 작성된 Thumb 코드 앞에 와야 합니다.

  • THUMBX 지시어가 UAL 구문으로 작성된 Thumb-2EE 코드 앞에 와야 합니다.

  • CODE16 지시어가 UAL 이전 구문으로 작성된 Thumb 코드 앞에 와야 합니다.

이러한 지시어는 명령어로 어셈블되지 않으며 상태를 변경하지도 않습니다. 다만 ARM, Thumb 또는 Thumb-2EE 또는 Thumb 명령어를 적절하게 어셈블하도록 어셈블러에 지시하고, 필요한 경우 패딩을 삽입합니다.

예제

이 예제에서는 ARMTHUMB을 사용하여 ARM 명령어에서 Thumb 명령어로 분기하는 방법을 보여 줍니다.

        AREA ToThumb, CODE, READONLY    ; Name this block of code
        ENTRY                           ; Mark first instruction to execute
        ARM                             ; Subsequent instructions are ARM 
start
        ADR     r0, into_thumb + 1      ; Processor starts in ARM state 
        BX      r0                      ; Inline switch to Thumb state
        THUMB                           ; Subsequent instructions are Thumb
into_thumb
        MOVS    r0, #10                 ; New-style Thumb instructions
Copyright © 2002-2008 ARM Limited. All rights reserved.ARM DUI 0204IK
Non-Confidential