Format |
Syntax: |
Operation: |
Operands: |
Architecture revision |
Opcode | ||||||||||||
1 |
stm {--}Rp, Reglist16 |
Storeaddress = Rp; if Opcode[--] == 1 then for (i = 0 to 15) if Reglist16[i] == 1 then *(--Storeaddress) =Ri; Rp = Storeaddress; else for (i = 15 to 0) if Reglist16[i] == 1 then *(Storeaddress++) =Ri; |
Reglist16 ∈ {R0, R1, R2, ..., R12, LR, SP, PC} p ∈ {0, 1, …, 15} |
Rev1+ |
|
Stores the registers specified to the consecutive memory locations pointed to by Rp. Both regis- ters in the register file and some of the special-purpose registers can be stored.
Q: |
Not affected. |
V: |
Not affected. |
N: |
Not affected. |
Z: |
Not affected. |
C: |
Not affected. |
Emtpy Reglist16 gives UNDEFINED result.
If Rp is in Reglist16 and pointer is written back the result is UNDEFINED
The R bit in the status register has no effect on this instruction.