3.5.8. REV, REV16, REVSH, and RBIT

Reverse bytes and Reverse bits.

Syntax

op{cond} Rd, Rn

Where:

op

Is one of:

REV

Reverse byte order in a word.

REV16

Reverse byte order in each halfword independently.

REVSH

Reverse byte order in the bottom halfword, and sign extend to 32 bits.

RBIT

Reverse the bit order in a 32‑bit word.

cond

Is an optional condition code. See Conditional execution.

Rd

Is the destination register.

Rn

Is the register holding the operand.

Operation

Use these instructions to change endianness of data:

REV

converts either:

  • 32‑bit big‑endian data into little‑endian data.

  • 32‑bit little‑endian data into big‑endian data.

REV16

converts either:

  • 16‑bit big‑endian data into little‑endian data.

  • 16‑bit little‑endian data into big‑endian data.

REVSH

converts either:

  • 16‑bit signed big‑endian data into 32‑bit signed little‑endian data.

  • 16‑bit signed little‑endian data into 32‑bit signed big‑endian data.

Restrictions

Do not use SP and do not use PC.

Condition flags

These instructions do not change the flags.

Examples

    REV    R3, R7  ; Reverse byte order of value in R7 and write it to R3.
    REV16  R0, R0  ; Reverse byte order of each 16-bit halfword in R0.
    REVSH  R0, R5  ; Reverse Signed Halfword.
    REVHS  R3, R7  ; Reverse with Higher or Same condition.
    RBIT   R7, R8  ; Reverse bit order of value in R8 and write the result to R7.

Copyright © 2015, 2018 Arm. All rights reserved.ARM DUI 0646C
Non-ConfidentialID121118