Wbudowany assembler dla architektur Thumb2

Ten dokument zakłada pewną znajomość programowania w języku asemblera. Zwięzły opis zestawu instrukcji można znaleźć w ARM Thumb-2 Instruction Set Quick Reference Card w sekcji References poniżej. Wbudowany assembler obsługuje podzbiór zestawu instrukcji ARM Thumb-2 opisany tutaj. Składnia stara się być jak najbliższa tej zdefiniowanej przez ARM, przekonwertowanej na wywołania funkcji Pythona.

Instrukcje operują na 32-bitowych danych całkowitoliczbowych ze znakiem, z wyjątkiem przypadków, gdy stwierdzono inaczej. Większość obsługiwanych instrukcji operuje wyłącznie na rejestrach R0-R7: tam, gdzie obsługiwane są R8-R15, jest to wyraźnie zaznaczone. Rejestry R8-R12 muszą zostać przywrócone do ich początkowych wartości przed powrotem z funkcji. Rejestry R13-R15 stanowią odpowiednio rejestr łącza (Link Register), wskaźnik stosu (Stack Pointer) i licznik programu (Program Counter).

Konwencje dokumentu

Tam, gdzie to możliwe, zachowanie każdej instrukcji jest opisane w Pythonie, na przykład

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

Umożliwia to zademonstrowanie efektu instrukcji w Pythonie. W niektórych przypadkach jest to niemożliwe, ponieważ Python nie obsługuje koncepcji takich jak adresowanie pośrednie. Pseudokod stosowany w takich przypadkach jest opisany na odpowiedniej stronie.

Kategorie instrukcji

Poniższe sekcje szczegółowo opisują podzbiór zestawu instrukcji ARM Thumb-2 obsługiwany przez MicroPython.

Przykłady użycia

Te sekcje zawierają dalsze przykłady kodu oraz wskazówki dotyczące użycia assemblera.

Materiały referencyjne