Assemblador inline para arquiteturas Thumb2¶
Este documento pressupõe alguma familiaridade com programação em linguagem assembladora. Para uma descrição concisa do conjunto de instruções, consulte o ARM Thumb-2 Instruction Set Quick Reference Card em References abaixo. O assemblador inline suporta um subconjunto do conjunto de instruções ARM Thumb-2 aqui descrito. A sintaxe procura ser o mais próxima possível da definida pela ARM, convertida em chamadas de funções Python.
As instruções operam sobre dados inteiros com sinal de 32 bits, exceto onde indicado de outra forma. A maioria das instruções suportadas opera apenas nos registos R0-R7: onde R8-R15 são suportados, tal é indicado. Os registos R8-R12 devem ser restaurados ao seu valor inicial antes do retorno de uma função. Os registos R13-R15 constituem o Registo de Ligação, o Apontador de Pilha e o Contador de Programa, respetivamente.
Convenções do documento¶
Sempre que possível, o comportamento de cada instrução é descrito em Python, por exemplo
add(Rd, Rn, Rm)
Rd = Rn + Rm
Isto permite demonstrar o efeito das instruções em Python. Em determinados casos isso é impossível porque o Python não suporta conceitos como indireção. O pseudocódigo utilizado nesses casos é descrito na página relevante.
Categorias de instruções¶
As secções seguintes detalham o subconjunto do conjunto de instruções ARM Thumb-2 suportado pelo MicroPython.
- 1. Instruções de movimentação de registos
- 2. Carregar registo da memória
- 3. Armazenar registo na memória
- 4. Instruções lógicas e de bits
- 5. Instruções aritméticas
- 6. Instruções de comparação
- 7. Instruções de ramificação
- 8. Push e pop na pilha
- 9. Instruções diversas
- 10. Instruções de vírgula flutuante
- 11. Diretivas do assembler
Exemplos de utilização¶
Estas secções fornecem mais exemplos de código e dicas sobre a utilização do assemblador.