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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Assembler syntax<br />

LDMIB {!}, <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 loaded, separated by commas <strong>and</strong> surrounded by<br />

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

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

The SP can be in the list. However, instructions that include the SP in the list are deprecated.<br />

The PC can be in the list. If it is, the instruction branches to the address (data) loaded to the<br />

PC. In <strong>ARM</strong>v5T <strong>and</strong> above, this branch is an interworking branch, see Pseudocode details<br />

of operations on <strong>ARM</strong> core registers on page A2-12.<br />

Instructions that include both the LR <strong>and</strong> the PC in the list are deprecated.<br />

Instructions with the base register in the list <strong>and</strong> ! specified are only available before<br />

<strong>ARM</strong>v7, <strong>and</strong> the use of such instructions is deprecated. The value of the base register after<br />

such an instruction is UNKNOWN.<br />

LDMED is a pseudo-instruction for LDMIB, referring to its use for popping data from Empty Descending stacks.<br />

The pre-UAL syntaxes LDMIB <strong>and</strong> LDMED are equivalent to LDMIB.<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 />

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

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

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

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

if wback && registers == ‘1’ then R[n] = bits(32) UNKNOWN;<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-117

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

Saved successfully!

Ooh no, something went wrong!