Inline-Assembler für Thumb2-Architekturen¶
Dieses Dokument setzt eine gewisse Vertrautheit mit der Programmierung in Assemblersprache voraus. Für eine knappe Beschreibung des Befehlssatzes konsultieren Sie die ARM Thumb-2 Instruction Set Quick Reference Card unter References weiter unten. Der Inline-Assembler unterstützt eine hier beschriebene Teilmenge des ARM-Thumb-2-Befehlssatzes. Die Syntax versucht, so nahe wie möglich an der von ARM definierten zu bleiben, übersetzt in Python-Funktionsaufrufe.
Anweisungen operieren auf vorzeichenbehafteten 32-Bit-Ganzzahldaten, sofern nicht anders angegeben. Die meisten unterstützten Anweisungen operieren nur auf den Registern R0-R7: wo R8-R15 unterstützt werden, wird dies angegeben. Die Register R8-R12 müssen vor der Rückkehr aus einer Funktion auf ihren ursprünglichen Wert zurückgesetzt werden. Die Register R13-R15 bilden das Link-Register, den Stack-Pointer bzw. den Program Counter.
Dokumentkonventionen¶
Wo möglich wird das Verhalten jeder Anweisung in Python beschrieben, zum Beispiel
add(Rd, Rn, Rm)
Rd = Rn + Rm
Dies ermöglicht, die Wirkung von Anweisungen in Python zu demonstrieren. In bestimmten Fällen ist dies unmöglich, weil Python Konzepte wie Indirektion nicht unterstützt. Der in solchen Fällen verwendete Pseudocode wird auf der jeweiligen Seite beschrieben.
Anweisungskategorien¶
Die folgenden Abschnitte beschreiben im Detail die Teilmenge des ARM-Thumb-2-Befehlssatzes, die von MicroPython unterstützt wird.
- 1. Register-Verschiebeanweisungen
- 2. Register aus dem Speicher laden
- 3. Register in den Speicher schreiben
- 4. Logische und bitweise Anweisungen
- 5. Arithmetische Befehle
- 6. Vergleichsbefehle
- 7. Verzweigungsanweisungen
- 8. Stack-Push und -Pop
- 9. Verschiedene Anweisungen
- 10. Gleitkommabefehle
- 11. Assembler-Direktiven
Anwendungsbeispiele¶
Diese Abschnitte bieten weitere Code-Beispiele und Hinweise zur Verwendung des Assemblers.