Programsko kodo za mikrokontrolerje lahko pišemo v različnih programskih jezikih. Med njimi je danes še zmeraj dominanten jezik C, vendar se včasih pojavi potreba po programiranju nekaterih delov programske kode v nizkonivojskem zbirniškem jeziku, ki je jezik procesorja oziroma jedra mikrokontrolerja.

Čeprav je večina programske kode za projekte, ki temeljijo na mikrokontrolerjih, napisana samo v enem od višjih programskih jezikov (npr. v jeziku C), se v praksi večkrat pokaže potreba po vključitvi kode v zbirniku (angl. Assembly Language). Obstaja vrsta orodij za učinkovito zaznavanje programskih odsekov (funkcij), ki za svoje izvajanje potrošijo največ časa. Težava pa je v tem, da prevajalniki nimajo znanja, kako te odseke optimizirati. Da ne bi bili odvisni od iznajdljivosti prevajalnikov, lahko v tem primeru poskušamo te dele programske opreme kar ročno optimalno zapisati v zbirniku. Standardni prevajalniki jezika C tudi ne uporabljajo določenih ukazov, ki jih podpira procesor Cortex-M (npr. ROR – ROtate Right in RRX – Rotate Right eXtended). Pri pisanju gonilnikov in zagonske kode za mikrokontrolerje ima zbirnik še posebno pomembno vlogo, saj omogoča neposredni dostop do strojne opreme. Velja pa tudi, da programerji, vešči pisanja programske kode v zbirniku, pišejo optimalnejšo kodo v jeziku C [3].

Kako se pogovarjata C in zbirnik za mikrokontrolerje ARM?
2017_SE252_47

