* Multiple loading and storing
(see ref 1.)
LDM and STM instructions are useful load and store multiple data.
* Branch instruction
(See ref 2.)
B -> branch
BL -> branch with link
In ARM mode, the B and BL can jump to +- 32MB from current PC. The address range can be extended by linker inserting veneer.
In my experience, veneer code has the same effect like below.
Example
.global _long_jump_addr
_long_jump_addr:
.word long_jump_address # this is the address beyond +- 32
# should be defined in somewhere like linker script
...
ldr r0, _long_jump_address
bl r0
[References]