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 />

VSTR{.64} , [{, #+/-}] Encoding T1 / A1<br />

VSTR{.32} , [{, #+/-}] Encoding T2 / A2<br />

where:<br />

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

.32, .64 Optional data size specifiers.<br />

The source register for a doubleword store.<br />

The source register for a singleword store.<br />

Instruction Details<br />

The base register. The SP can be used. In the <strong>ARM</strong> instruction set the PC can be used.<br />

However, use of the PC is deprecated.<br />

+/- Is + or omitted if the immediate offset is to be added to the base register value (add == TRUE),<br />

or – if it is to be subtracted (add == FALSE). #0 <strong>and</strong> #-0 generate different instructions.<br />

The immediate offset used to form the address. Values are multiples of 4 in the range<br />

0-1020. can be omitted, meaning an offset of +0.<br />

Operation<br />

if ConditionPassed() then<br />

EncodingSpecificOperations(); CheckVFPEnabled(TRUE); NullCheckIfThumbEE(n);<br />

address = if add then (R[n] + imm32) else (R[n] - imm32);<br />

if single_reg then<br />

MemA[address,4] = S[d];<br />

else<br />

// Store as two word-aligned words in the correct order for current endianness.<br />

MemA[address,4] = if BigEndian() then D[d] else D[d];<br />

MemA[address+4,4] = if BigEndian() then D[d] else D[d];<br />

Exceptions<br />

Undefined Instruction, Data Abort.<br />

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

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

Saved successfully!

Ooh no, something went wrong!