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.

Esempi di utilizzo

Queste sezioni forniscono ulteriori esempi di codice e suggerimenti sull’uso dell’assembler.

Riferimenti