UM10360 All information provided in this document is subject to legal disclaimers. © NXP B.V. 2013. All rights reserved.
User manual Rev. 3 — 20 December 2013 691 of 841
NXP Semiconductors
UM10360
Chapter 34: Appendix: Cortex-M3 user guide
34.2.5.8 REV, REV16, REVSH, and RBIT
Reverse bytes and Reverse bits.
34.2.5.8.1 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
RBIT
Reverse the bit order in a 32-bit word.
cond is an optional condition code, see Section 34.2.3.7
.
Rd is the destination register.
Rn is the register holding the operand.
34.2.5.8.2 Operation
Use these instructions to change endianness of data:
REV:
converts 32-bit big-endian data into little-endian data or 32-bit little-endian data into
big-endian data.
REV16
converts 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
16-bit signed little-endian data into 32-bit signed big-endian data.
34.2.5.8.3 Restrictions
Do not use SP and do not use PC.
34.2.5.8.4 Condition flags
These instructions do not change the flags.
34.2.5.8.5 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