|
META TOPICPARENT |
name="WebHome" |
Calling C Functions from Forth and Vice Versa |
|
https://community.arm.com/developer/ip-products/processors/b/processors-ip-blog/posts/on-the-aapcs-with-an-application-to-efficient-parameter-passing |
|
< < |
Register |
AAPCS Purpose |
MECRISP Forth Purpose |
r0 |
Argument, result, scratch register 1 |
Scratch |
r1 |
Argument, result, scratch register 2 |
Scratch |
r2 |
Argument, scratch register 3 |
Scratch |
r3 |
Argument, scratch register 4 |
Scratch |
r4 |
Variable register 1 |
DO Index |
r5 |
Variable register 2 |
DO Limit |
r6 |
Variable register 3 |
Top Of Stack TOS |
r7 |
Variable register 4 |
Data stack pointer |
r8 |
Variable register 5 |
unused |
r9 |
Platform register (usage defined by platform in use) |
unused |
r10 |
Variable register 7 |
unused |
r11 |
Variable register 8 |
unused |
r12 |
Intra-procedure-call scratch register |
unused |
r13 |
Stack pointer (SP) |
Stack pointer (SP) |
r14 |
Link register (LR) |
Link register (LR) |
r15 |
Program counter (PC) |
Program counter (PC) |
|
> > |
Register |
AAPCS Purpose |
MECRISP Forth Purpose |
ISR Stacking |
xPSR |
Processor Status Register, Flags |
Flags |
1 |
r0 |
Argument, result, scratch register 1 |
Scratch |
2 |
r1 |
Argument, result, scratch register 2 |
Scratch |
3 |
r2 |
Argument, scratch register 3 |
Scratch |
4 |
r3 |
Argument, scratch register 4 |
Scratch |
5 |
r4 |
Variable register 1 |
DO Index |
|
r5 |
Variable register 2 |
DO Limit |
|
r6 |
Variable register 3 |
Top Of Stack TOS |
|
r7 |
Variable register 4 |
Data stack pointer |
|
r8 |
Variable register 5 |
unused |
|
r9 |
Platform register (usage defined by platform in use) |
unused |
|
r10 |
Variable register 7 |
unused |
|
r11 |
Variable register 8 |
unused |
|
r12 |
Intra-procedure-call scratch register |
unused |
6 |
r13 |
Stack pointer (SP) |
Stack pointer (SP) |
|
r14 |
Link register (LR) |
Link register (LR) |
7 |
r15 |
Program counter (PC) |
Program counter (PC) |
0 |
|
|
VFP Register Usage
The VFP-v2 co-processor has 32 single-precision registers, s0-s31, which may also be accessed as 16 |