2.6.4.7.2 Operation
PUSH
stores registers on the stack, with the lowest
numbered register using the lowest memory address and the highest numbered register using
the highest memory address.
POP
loads registers from the stack, with the lowest
numbered register using the lowest memory address and the highest numbered register using
the highest memory address.
PUSH
uses the value in the SP register minus four as the
highest memory address, POP
uses the value in the SP register as the
lowest memory address, implementing a full-descending stack. On completion,
PUSH
updates the SP register to point to the location of the lowest
stored value, POP
updates the SP register to point to the location
immediately above the highest location loaded.
If a POP
instruction includes PC in its
reglist
, a branch to this location is performed when the
POP
instruction has completed. Bit[0] of the value read for the PC is
used to update the APSR
T-bit. This bit must be 1 to ensure correct
operation.
For more information, see 2.6.4.6 LDM and STM for more information.