Keil™, An ARM® Company

RealView Assembler User's Guide

Splitting long LDMs and STMs

3.1.7. Splitting long LDMs and STMs

Use the following option to instruct the assembler to fault LDM and STM instructions with large numbers of registers:

‑‑split_ldm

This option faults LDM and STM instructions if the maximum number of registers transferred exceeds:

  • five, for all STMs, and for LDMs that do not load the PC

  • four, for LDMs that load the PC.

Avoiding large multiple register transfers can reduce interrupt latency on ARM systems that:

  • do not have a cache or a write buffer (for example, a cacheless ARM7TDMI)

  • use zero wait‑state, 32‑bit memory.

Also, avoiding large multiple register transfers:

  • always increases code size.

  • has no significant benefit for cached systems or processors with a write buffer.

  • has no benefit for systems without zero wait‑state memory, or for systems with slow peripheral devices. Interrupt latency in such systems is determined by the number of cycles required for the slowest memory or peripheral access. This is typically much greater than the latency introduced by multiple register transfers.

Copyright © 2007 ARM Limited. All rights reserved.ARM DUI 0379A