好记性不如铅笔头

ARM, 操作系统, 编程

《RealView编译工具汇编器指南》摘录:指令集和语法选择指令

备注:

1 本部分文档摘录自ARM网站【 http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204ic/index.html 】,版权归属于ARM。

2 作者只摘录了部分内容,全面详细的内容清参考ARM网址。

7.7.1. ARM、THUMB、THUMBX、CODE16 和 CODE32

ARM 指令和 CODE32 指令是同义词。 它们使用 UAL 或 Thumb-2 以前的汇编语言语法,指示汇编器将后续指令解释为 ARM 指令。
THUMB 指令使用 UAL 语法,指示汇编器将后续指令解释为 Thumb 指令。
THUMBX 指令使用 UAL 语法,指示汇编器将后续指令解释为 Thumb-2EE 指令。
CODE16 指令使用 UAL 以前的汇编语言语法,指示汇编器将后续指令解释为 Thumb 指令。
必要时,这些指令也可插入最多三个填充字节,以对齐到 ARM 的下一个字边界,或插入最多一个填充字节,以对齐到 Thumb 或 Thumb-2EE 的下一个半字边界。

语法

ARM
THUMB
THUMBX
CODE16
CODE32

用法

在包含使用不同指令集的代码的文件中:
    ARM 必须位于任何 ARM 代码之前。 CODE32 是 ARM 的同义词。
    THUMB 必须位于用 UAL 语法编写的 Thumb 代码之前。
    THUMBX 必须位于用 UAL 语法编写的 Thumb-2EE 代码之前。
    CODE16 必须位于用 UAL 以前的语法编写的 Thumb 代码之前。
这些命令不汇编为任何指令, 也不更改状态。 它们仅指示汇编器适当地汇编 ARM、Thumb 或 Thumb-2EE 指令,并在必要时插入填充字节。

示例

此示例演示如何使用 ARM 和 THUMB 从 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

 

Leave a Reply

15 + 20 =

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据