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.

Anwendungsbeispiele

Diese Abschnitte bieten weitere Code-Beispiele und Hinweise zur Verwendung des Assemblers.

Referenzen