SPRAB89A September 2011 – March 2014
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 32 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 32 bits are sign extended into the upper bits of the register. Unsigned values smaller than 32 bits are zero extended.
Objects whose size is between 32 and 64 bits use register pairs. Register pairs consist of an even-numbered register, which holds the least significant part of the value, and the next consecutive odd-numbered register, which holds the most significant part. Register pairs are denoted as Ro:Re where Ro is the odd register and Re is the even one (for example, A5:A4). Numeric values in register pairs are right justified into the even register; that is, bit 0 of the even register contains the least significant bit and bit 0 of the odd register contains bit 32 of the value. Signed integral values are sign extended into the upper bits of the odd register. Unsigned values are zero extended.
Objects larger than 64 bits have no designated register representation.