
 111
SAM4CP [DATASHEET]
43051E–ATPL–08/14
12.6.5.8 REV, REV16, REVSH, and RBIT
Reverse bytes and Reverse bits.
Syntax
op
{
cond
} 
Rd
, 
Rn
where:
op
is any 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.