The STM32 Cortex-M4 instruction set PM0214
92/262 PM0214 Rev 9
3.5.8 REV, REV16, REVSH, and RBIT
Reverse bytes and Reverse bits.
Syntax
op{cond} Rd, Rn
Where:
• ‘op’ is one of the following:
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 extends to 32 bits.
RBIT: Reverse the bit order in a 32-bit word.
• ‘cond’ is an optional condition code, see Conditional execution on page 65.
• ‘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
– or 32-bit little-endian data into big-endian data.
• REV16: Converts either:
– 16-bit big-endian data into little-endian data
– or 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
– or 16-bit signed little-endian data into 32-bit signed big-endian data.
Restrictions
Do not use either SP or 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 result to R7