Assembler inline para arquiteturas Thumb2¶
Este documento pressupõe alguma familiaridade com programação em linguagem assembly. Para uma descrição concisa do conjunto de instruções, consulte o ARM Thumb-2 Instruction Set Quick Reference Card em References abaixo. O assembler inline oferece suporte a um subconjunto do conjunto de instruções ARM Thumb-2 descrito aqui. A sintaxe procura ser o mais próxima possível daquela definida pela ARM, convertida em chamadas de função 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 sobre os registradores R0-R7: onde há suporte a R8-R15, isso é indicado. Os registradores R8-R12 devem ser restaurados ao seu valor inicial antes do retorno de uma função. Os registradores R13-R15 constituem o Link Register, o Stack Pointer e o Program Counter, respectivamente.
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
Isso permite que o efeito das instruções seja demonstrado em Python. Em certos casos isso é impossível, porque o Python não suporta conceitos como indireção. O pseudocódigo empregado nesses casos é descrito na página relevante.
Categorias de instruções¶
As seções a seguir detalham o subconjunto do conjunto de instruções ARM Thumb-2 suportado pelo MicroPython.
- 1. Instruções de movimentação de registradores
- 2. Carregar registrador a partir da memória
- 3. Armazenar registrador 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 desvio
- 8. Empilhar e desempilhar na pilha
- 9. Instruções diversas
- 10. Instruções de ponto flutuante
- 11. Diretivas do assembler
Exemplos de uso¶
Estas seções fornecem exemplos de código adicionais e dicas sobre o uso do assembler.