Ugrađeni asembler za Thumb2 arhitekture¶
Ovaj dokument pretpostavlja određeno poznavanje programiranja u asemblerskom jeziku. Za sažeti opis skupa instrukcija proučite ARM Thumb-2 Instruction Set Quick Reference Card pod References u nastavku. Ugrađeni asembler podržava podskup skupa instrukcija ARM Thumb-2 opisanog ovdje. Sintaksa nastoji biti što bliža onoj koju definira ARM, prevedenoj u pozive Python funkcija.
Instrukcije rade na 32-bitnim predznačenim cjelobrojnim podacima osim gdje je drugačije navedeno. Većina podržanih instrukcija radi samo na registrima R0-R7: gdje su podržani R8-R15 to je navedeno. Registri R8-R12 moraju se obnoviti na svoju početnu vrijednost prije povratka iz funkcije. Registri R13-R15 čine poveznički registar (Link Register), pokazivač stoga (Stack Pointer) odnosno programski brojač (Program Counter).
Konvencije dokumenta¶
Gdje je moguće, ponašanje svake instrukcije opisano je u Pythonu, na primjer
add(Rd, Rn, Rm)
Rd = Rn + Rm
To omogućuje demonstriranje učinka instrukcija u Pythonu. U određenim slučajevima to je nemoguće jer Python ne podržava koncepte poput indirekcije. Pseudokod korišten u takvim slučajevima opisan je na odgovarajućoj stranici.
Kategorije instrukcija¶
Sljedeći odjeljci detaljno opisuju podskup skupa instrukcija ARM Thumb-2 koji podržava MicroPython.
- 1. Instrukcije premještanja registara
- 2. Učitavanje registra iz memorije
- 3. Pohrana registra u memoriju
- 4. Logičke i bitovne instrukcije
- 5. Aritmetičke instrukcije
- 6. Instrukcije usporedbe
- 7. Instrukcije grananja
- 8. Stavljanje na stog i skidanje sa stoga
- 9. Razne instrukcije
- 10. Instrukcije s pomičnim zarezom
- 11. Direktive asemblera
Primjeri uporabe¶
Ovi odjeljci pružaju daljnje primjere koda i savjete o uporabi asemblera.