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.

Exemplos de uso

Estas seções fornecem exemplos de código adicionais e dicas sobre o uso do assembler.

Referências