SLAA534A June 2013 – June 2020
In general, implementations are free to use registers as they see fit. The standard register representations specified in this section apply only to values passed to or returned from functions.
Objects whose size is 16 bits or less can reside in single registers.
Numeric values in registers are always right justified; that is, bit 0 of the register contains the least significant bit of the value. Signed integral values smaller than 16 bits are sign extended into the upper bits of the register. Unsigned values smaller than 16 bits are zero extended.
Objects whose size is between 16 and 32 bits use register pairs. Register pairs are any two general-purpose registers, one holding the least significant part of the value, and other holding the most significant part. In this document, register pairs are denoted as RL:RH where RL contains the LSB and RH contains the MSB (for example, R12:R13). The MSP430 instruction set does not use this notation. Signed integral values are sign extended into the upper bits of RH. Unsigned values are zero extended.
Objects whose size is greater than 32 bits and up to 64 bits use register quads. For example, R8::R11 is a register quad consisting of registers R8, R9, R10, and R11. See Section 3.4.4.