Assembler inline per architetture Thumb2¶
Questo documento presuppone una certa familiarità con la programmazione in linguaggio assembly. Per una descrizione concisa del set di istruzioni, consultare l’ARM Thumb-2 Instruction Set Quick Reference Card sotto References qui di seguito. L’assembler inline supporta un sottoinsieme del set di istruzioni ARM Thumb-2 descritto qui. La sintassi cerca di essere il più vicino possibile a quella definita da ARM, convertita in chiamate di funzione Python.
Le istruzioni operano su dati interi con segno a 32 bit, tranne dove diversamente indicato. La maggior parte delle istruzioni supportate opera solo sui registri R0-R7: dove R8-R15 sono supportati, ciò viene indicato. I registri R8-R12 devono essere ripristinati al loro valore iniziale prima del ritorno da una funzione. I registri R13-R15 costituiscono rispettivamente il Link Register, lo Stack Pointer e il Program Counter.
Convenzioni del documento¶
Ove possibile, il comportamento di ciascuna istruzione è descritto in Python, ad esempio
add(Rd, Rn, Rm)
Rd = Rn + Rm
Questo consente di dimostrare l’effetto delle istruzioni in Python. In certi casi ciò è impossibile, perché Python non supporta concetti come l’indirezione. Lo pseudocodice utilizzato in tali casi è descritto nella pagina pertinente.
Categorie di istruzioni¶
Le sezioni seguenti dettagliano il sottoinsieme del set di istruzioni ARM Thumb-2 supportato da MicroPython.
- 1. Istruzioni di spostamento dei registri
- 2. Caricamento di un registro dalla memoria
- 3. Memorizzazione di un registro in memoria
- 4. Istruzioni logiche e bit a bit
- 5. Istruzioni aritmetiche
- 6. Istruzioni di confronto
- 7. Istruzioni di diramazione
- 8. Push e pop dello stack
- 9. Istruzioni varie
- 10. Istruzioni in virgola mobile
- 11. Direttive dell’assembler
Esempi di utilizzo¶
Queste sezioni forniscono ulteriori esempi di codice e suggerimenti sull’uso dell’assembler.