Inline Assembler for Thumb2 architectures

The inline assembler supports a subset of the ARM Thumb-2 instruction set described here. The syntax tries to be as close as possible to that defined in the above ARM manual, converted to Python function calls.

Instructions operate on 32 bit signed integer data except when stated otherwise. Most supported instructions operate on registers R0-R7 only: when R8-R15 are supported this is stated. Registers R8-R12 must be restored to their initial value before return from a function. Registers R13-R15 constitute the Link Register, Stack Pointer and Program Counter respectively.

Document conventions

Where possible the behavior of each instruction is described in Python, for example

  • add(Rd, Rn, Rm) Rd = Rn + Rm

This enables the effect of instructions to be demonstrated in Python. In certain case this is impossible because Python doesn’t support concepts such as indirection. The pseudocode employed in such cases is described on the relevant page.

Usage examples

These sections provide further code examples and hints on the use of the assembler.