Assembler-Registerdefines

In Luna sind intern sowie für Inline-Assembler die Defines (Namen) für die Register 0-31 vorbelegt. Sie können in Inline-Assembler mit der Direktive .def nachträglich geändert werden.

Die Register 0-31 sind in Luna in 8 Register-Gruppen unterteilt. Luna nutzt keines der Register als ständig mitgeführten Status oder Pointer. Es können daher sämtliche Register zu jeder Zeit genutzt und verändert werden.

Die Registergruppen:

Gruppe Register Name
Low A R0 _LA0
R1 _LA1
R2 _LA2
R3 _LA3
Low B R4 _LB0
R5 _LB1
R6 _LB2
R7 _LB3
Temp 1 R8 _TMP0
R9 _TMP1
R10 _TMP2
R11 _TMP3
Temp 2 R12 _TMPA
R13 _TMPB
R14 _TMPC
R15 _TMPD
High A R16 _HA0
R17 _HA1
R18 _HA2
R19 _HA3
High B R20 _HB0
R21 _HB1
R22 _HB2
R23 _HB3
Low Pointer R24 WL
R25 WH
R26 XL
R27 XH
High Pointer R28 YL
R29 YH
R30 ZL
R31 ZH

Nutzung der Gruppen

  • LA,LB,Temp1 und Temp2: Werden für temporäre Daten innerhalb der internen Funktionen verwendet.
  • HA und HB: Werden als allgemeine Arbeitsregister verwendet.
  • Low/High-Pointer: Werden als TypeFlags, Array-Index, als Zwischenregister zum Verschieben auf den Stack, als klassische Pointer für den Zugriff auf Speicherbereiche, sowie beim Aufruf und innerhalb von internen Funktionen verwendet.