Obecné registry
Procesor má sadu šestnácti 32-bitových registrů R0 - R15 a několik speciálních registrů. Pro práci s pamětí jsou k dispozici pouze Load/Store instrukce. Všechny datové operace jsou prováděny nad polem registrů R0 až R15.
.data num1: .word 0 num2: .word 0 res: .word 0 .text LDR R6, =num1 @ R6 = adresa num1 LDR R0, [R6] @ R0 = obsah adresy num1 LDR R1, [R6, #4] @ R1 = obsah adresy num2 ADD R0, R0, R1 @ R0 = R0 + R1 STR R0, [R6, #8] @ ulož R0 na adresu res
Příklady v assembleru používají syntaxi GNU assembleru. Jednořádkový komentář pro platformu ARM začíná znakem @ čili zavináč.
Obecné registry R0 - R15 jsou určeny pro datové operace. Všechny datové operace, tzn. aritmetické operace, logické operace, posuny a rotace, jsou prováděné nad sadou obecných registrů.
Pokud například potřebujete sečíst dvě čísla, uložená v paměti, musí se nejdříve natáhnout do registrů, provést součet a výsledek pak uložit do paměti.
Pole registrů R0 až R15 zobrazuje tabulka 1.1.
- Registry R0 - R7 jsou označované jako Low registers (dolní registry). Tyto registry lze použít ve všech 32-bitových Thumb-2 instrukcích a také ve všech 16-bitových instrukcích Thumb.
- Registry R8 - R12 jsou označované jako High registers (horní registry) a lze je použít ve všech 32-bitových instrukcích Thumb-2, ale ne ve všech 16-bitových instrukcích Thumb.
- Registr R13 je ukazatel vrcholu zásobníku Stack pointer - SP. Cortex-M3 má dva ukazatele zásobníku, Main Stack Pointer - MSP a Process Stack Pointer - PSP.
- Registr R14 je Link register - LR a je vyhrazen pro uložení návratové adresy při volání podprogramu například instrukcí BL (Branch and Link).
- Registr R15 je čítač instrukcí Program counter - PC a obsahuje adresu následující prováděné instrukce.