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.
- 1. Instrukcje przeniesienia rejestru
- 2. Załaduj rejestr z pamięci
- 3. Zapisz rejestr do pamięci
- 4. Instrukcje logiczne i bitowe
- 5. Instrukcje arytmetyczne
- 6. Instrukcje porównania
- 7. Instrukcje rozgałęzień
- 8. Odkładanie i zdejmowanie ze stosu
- 9. Instrukcje różne
- 10. Instrukcje zmiennoprzecinkowe
- 11. Dyrektywy asemblera
Przykłady użycia¶
Te sekcje zawierają dalsze przykłady kodu oraz wskazówki dotyczące użycia assemblera.