Inline assembler voor Thumb2-architecturen¶
Dit document veronderstelt enige bekendheid met programmeren in assembleertaal. Voor een beknopte beschrijving van de instructieset raadpleeg je de ARM Thumb-2 Instruction Set Quick Reference Card onder References hieronder. De inline assembler ondersteunt een deelverzameling van de hier beschreven ARM Thumb-2 instructieset. De syntaxis probeert zo dicht mogelijk te blijven bij die welke door ARM is gedefinieerd, omgezet naar Python-functie-aanroepen.
Instructies werken op 32-bits signed integer-data, behalve waar anders aangegeven. De meeste ondersteunde instructies werken alleen op de registers R0-R7: waar R8-R15 worden ondersteund wordt dit vermeld. De registers R8-R12 moeten worden teruggezet op hun beginwaarde vóór de terugkeer uit een functie. De registers R13-R15 vormen respectievelijk het Link Register, de Stack Pointer en de Program Counter.
Documentconventies¶
Waar mogelijk wordt het gedrag van elke instructie in Python beschreven, bijvoorbeeld
add(Rd, Rn, Rm)
Rd = Rn + Rm
Hierdoor kan het effect van instructies in Python worden gedemonstreerd. In bepaalde gevallen is dit onmogelijk omdat Python concepten als indirectie niet ondersteunt. De pseudocode die in dergelijke gevallen wordt gebruikt, wordt op de betreffende pagina beschreven.
Instructiecategorieën¶
De volgende secties beschrijven in detail de deelverzameling van de ARM Thumb-2 instructieset die door MicroPython wordt ondersteund.
- 1. Register-move-instructies
- 2. Register laden uit geheugen
- 3. Register opslaan in geheugen
- 4. Logische en bitsgewijze instructies
- 5. Rekenkundige instructies
- 6. Vergelijkingsinstructies
- 7. Branch-instructies
- 8. Stack push en pop
- 9. Diverse instructies
- 10. Floating-point-instructies
- 11. Assembler-directieven
Gebruiksvoorbeelden¶
Deze secties bieden verdere codevoorbeelden en aanwijzingen voor het gebruik van de assembler.