4.4.11. REV、REV16、REVSH 和 RBIT

在字或半字内反转字节或位的顺序。

语法

op{cond} Rd, Rn

其中:

op

为下列项之一:

REV

反转字中的字节顺序。

REV16

独立反转每个半字中的字节顺序。

REVSH

反转低半字中的字节顺序,并将符号扩展到 32 位。

RBIT

反转 32 位字中的位的顺序。

cond

是一个可选的条件代码(请参阅条件执行)。

Rd

为目标寄存器。Rd 不能为 r15。

Rn

为存放操作数的寄存器。Rn 不能为 r15。

用法

您可利用这些指令来更改端序:

REV

将 32 位大端数据变为小端数据或将 32 位小端数据变为大端数据。

REV16

将 16 位大端数据变为小端数据或将 16 位小端数据变为大端数据。

REVSH

可完成以下转换:

  • 16 位带符号大端数据变为 32 位带符号小端数据

  • 16 位带符号小端数据变为 32 位带符号大端数据。

条件标记

这些指令不更改标记。

16 位指令

这些指令的下列格式可用于 Thumb 代码中,在 Thumb-2 代码中使用时为 16 位指令:

REV Rd, Rm

RdRm 必须都为 Lo 寄存器。

REV16 Rd, Rm

RdRm 必须都为 Lo 寄存器。

REVSH Rd, Rm

RdRm 必须都为 Lo 寄存器。

体系结构

RBIT 外,这些 ARM 指令均可用于 ARMv6 及更高版本中。

ARM RBIT 指令可用于 ARMv6T2 及更高版本。

这些 32 位 Thumb 指令可用于 ARMv6T2 和 ARMv7。

这些 16 位 Thumb 指令可用于 ARMv6 及更高版本的所有 T 变体中。

示例


    REV     r3, r7

    REV16   r0, r0

    REVSH   r0, r5       ; Reverse Signed Halfword

    REVHS   r3, r7       ; Reverse with Higher or Same condition

    RBIT    r7, r8

Copyright © 2002-2007 ARM Limited. All rights reserved. ARM DUI 0204HC
Non-Confidential