• ARM指令集相关知识


      1.ARMv8引入了执行状态机制,分为AArch32和AArch64

    • AArch32为T32(Thumb)和A32(ARM)。
    • AArch64为A64一种指令集

      A64和A32的指令都是32位宽,可以操作64/32位寄存器和64/32位地址总线

      T32技术兼容Thumb和Thumb2指令集,是16/32位混合指令集

          2.在ARMv7后期版本里,引入来Thumb2技术(增加指令个数与位宽,但大多数无条件,可以用it指令带条件,在ARM和Thumb指令之间不需要显示切换状态了),Thumb和ARM指令集被统一位UAL(Unified Assembly Language)语法,即16位汇编指令和32位汇编指令可以无缝的出现在代码里。Thumb和ARM指令本质上一样,只是被编码成不一样的格式。

             Originally, there was only ARM 32-bit instructions (1980-mid 1990s). Then ARM made a mode that was like a compression front-end that expanded a strictly 16bit opcodes to 32 bits. This was thumb mode (mid 1990s to ~2005). Then ARM came out with thumb2 (which is somewhat nebulous) mainly typified by a mix of both 16bit and 32bit instructions (~2005 to current).

    比较老的语法是这样的,用了Thumb2技术后在UAL下不需要了

    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 代码之前。 CODE32ARM 的同义词。

    • THUMB 必须位于用 UAL 语法编写的 Thumb 代码之前。

    • THUMBX 必须位于用 UAL 语法编写的 Thumb-2EE 代码之前。

    • CODE16 必须位于用 UAL 以前的语法编写的 Thumb 代码之前。

    这些命令不汇编为任何指令, 也不更改状态。 它们仅指示汇编器适当地汇编 ARM、Thumb 或 Thumb-2EE 指令,并在必要时插入填充字节。

    示例

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

       3.常见的指令集有 ARM, Thumb®, Thumb-2, NEON™, VFP,  Wireless MMX instruction sets

          4.判断当前代码ARM哪种指令集可以看27-25bit,由A1,A2,T1,T2,T3等

             

            

  • 相关阅读:
    (Java实现) 洛谷 P1106 删数问题
    (Java实现) 洛谷 P1603 斯诺登的密码
    (Java实现) 洛谷 P1036 选数
    (Java实现) 洛谷 P1012 拼数
    (Java实现) 洛谷 P1028 数的计算
    (Java实现) 洛谷 P1553 数字反转(升级版)
    (Java实现) 洛谷 P1051 谁拿了最多奖学金
    (Java实现) 洛谷 P1051 谁拿了最多奖学金
    (Java实现) 洛谷 P1106 删数问题
    目测ZIP的压缩率
  • 原文地址:https://www.cnblogs.com/cascle/p/5733559.html
Copyright © 2020-2023  润新知