| R0-R3 |
Used for passing parameters to functions. Any parameter that don’t fit here gets passed on the stack |
| R4-R10 |
Used for register variables. Registers 9 and 10 are also used for stack manipulation |
| R11 |
Called the frame pointer. It’s tipically set and restored during the prologue or epilogue code, since it’s the pointer through all local variables are accessed |
| R12 |
Called the interlink pointer. A scratch register for most GBA code. |
| R13 |
The Stack pointer, points to the last item pushed on the stack. |
| R14 |
The link register. It holds the return address for the subroutine. Normally it’s pushed to the stack and then popped directly into the program counter for the return. |
| R15 |
The program counter. We can directly change it to execute a jump |