29.10.2014 Views

ARM Compiler toolchain v4.1 for µVision Using the Compiler

ARM Compiler toolchain v4.1 for µVision Using the Compiler

ARM Compiler toolchain v4.1 for µVision Using the Compiler

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.

<strong>Using</strong> <strong>the</strong> Inline and Embedded Assemblers of <strong>the</strong> <strong>ARM</strong> <strong>Compiler</strong><br />

7.12 Inline assembler instruction restrictions in C and C++ code<br />

The following instructions are not supported in <strong>the</strong> inline assembler:<br />

• BKPT, BX, BXJ, and BLXinstructions<br />

Note<br />

You can insert a BKPT instruction in C and C++ code by using <strong>the</strong> __breakpoint() intrinsic.<br />

• LDR Rn, =expression pseudo-instruction. Use MOV Rn, expression instead. (This can<br />

generate a load from a literal pool.)<br />

• LDRT, LDRBT, STRT, and STRBT instructions<br />

• MUL, MLA, UMULL, UMLAL, SMULL, and SMLAL flag setting instructions<br />

• MOV or MVN flag-setting instructions where <strong>the</strong> second operand is a constant<br />

• user-mode LDM instructions<br />

• ADR and ADRL pseudo-instructions.<br />

Note<br />

You can use MOV Rn, &expression; instead of <strong>the</strong> ADR and ADRL pseudo-instructions.<br />

7.12.1 See also<br />

Concepts<br />

• Restrictions on inline assembly operations in C and C++ code on page 7-11.<br />

Reference<br />

• __breakpoint intrinsic on page 5-61.<br />

<strong>ARM</strong> DUI 0375C Copyright © 2007-2008, 2011 <strong>ARM</strong>. All rights reserved. 7-16<br />

ID061811<br />

Non-Confidential

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

Saved successfully!

Ooh no, something went wrong!