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.

Exemplos de utilização

Estas secções fornecem mais exemplos de código e dicas sobre a utilização do assemblador.

Referências