Inline assembler pro architektury Thumb2¶
Tento dokument předpokládá určitou znalost programování v jazyce symbolických adres. Pro stručný popis instrukční sady viz ARM Thumb-2 Instruction Set Quick Reference Card pod References níže. Inline assembler podporuje podmnožinu instrukční sady ARM Thumb-2 popsanou zde. Syntaxe se snaží být co nejblíže té definované firmou ARM, převedené na volání Python funkcí.
Instrukce pracují s 32bitovými celočíselnými daty se znaménkem, není-li uvedeno jinak. Většina podporovaných instrukcí pracuje pouze s registry R0-R7: tam, kde jsou podporovány R8-R15, je to uvedeno. Registry R8-R12 musí být před návratem z funkce obnoveny na svou počáteční hodnotu. Registry R13-R15 představují postupně Link Register, Stack Pointer a Program Counter.
Konvence dokumentu¶
Kde je to možné, je chování každé instrukce popsáno v Pythonu, například
add(Rd, Rn, Rm)
Rd = Rn + Rm
To umožňuje demonstrovat účinek instrukcí v Pythonu. V určitých případech je to nemožné, protože Python nepodporuje koncepty jako nepřímé odkazování. Pseudokód použitý v takových případech je popsán na příslušné stránce.
Kategorie instrukcí¶
Následující sekce podrobně popisují podmnožinu instrukční sady ARM Thumb-2 podporovanou MicroPythonem.
- 1. Instrukce přesunu registrů
- 2. Načtení registru z paměti
- 3. Uložení registru do paměti
- 4. Logické a bitové instrukce
- 5. Aritmetické instrukce
- 6. Porovnávací instrukce
- 7. Instrukce větvení
- 8. Vložení na zásobník a vyjmutí ze zásobníku
- 9. Různé instrukce
- 10. Instrukce s pohyblivou řádovou čárkou
- 11. Direktivy assembleru
Příklady použití¶
Tyto sekce poskytují další příklady kódu a tipy k použití assembleru.