05.02.2013 Views

ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition

ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition

ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Assembler syntax<br />

STMIB {!}, <br />

where:<br />

See St<strong>and</strong>ard assembler syntax fields on page A8-7.<br />

The base register. The SP can be used.<br />

! Causes the instruction to write a modified value back to . Encoded as W = 1.<br />

Instruction Details<br />

If ! is omitted, the instruction does not change in this way. Encoded as W = 0.<br />

Is a list of one or more registers to be stored, separated by commas <strong>and</strong> surrounded by<br />

{ <strong>and</strong> }. The lowest-numbered register is stored to the lowest memory address, through to<br />

the highest-numbered register to the highest memory address.<br />

The SP <strong>and</strong> PC can be in the list. However, instructions that include the SP or the PC in the<br />

list are deprecated.<br />

The use of instructions with the base register in the list <strong>and</strong> ! specified is deprecated. If the<br />

base register is not the lowest-numbered register in the list, such an instruction stores an<br />

UNKNOWN value for the base register.<br />

STMFA is a pseudo-instruction for STMIB, referring to its use for pushing data onto Full Ascending stacks.<br />

The pre-UAL syntax STMIB <strong>and</strong> STMFA are equivalent to STMIB.<br />

Operation<br />

if ConditionPassed() then<br />

EncodingSpecificOperations();<br />

address = R[n] + 4;<br />

for i = 0 to 14<br />

if registers == ‘1’ then<br />

if i == n && wback && i != LowestSetBit(registers) then<br />

MemA[address,4] = bits(32) UNKNOWN;<br />

else<br />

MemA[address,4] = R[i];<br />

address = address + 4;<br />

if registers == ‘1’ then<br />

MemA[address,4] = PCStoreValue();<br />

if wback then R[n] = R[n] + 4*BitCount(registers);<br />

Exceptions<br />

Data Abort.<br />

<strong>ARM</strong> DDI 0406B Copyright © 1996-1998, 2000, 2004-2008 <strong>ARM</strong> Limited. All rights reserved. A8-381

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!