Kaj je inline sestavljanje?

Vgrajeno sestavljanje – imenovano tudi vgrajeni zbirni jezik ali vgrajeni sestavljalnik – je blok kode montažnega jezika, ki se vstavi neposredno v funkcije in izvorno kodo za drug jezik. To omogoča programerju, da v program, v katerem preostali del programa uporablja jezik, ki ni sestavljen, vstavi blok čistega zbirnega jezika. Zmožnost je podprta v nekaterih jezikih – kot so C, C++ in Pascal –, vendar je značilnost posebnega uporabljenega prevajalnika in ni nujno del jezikovnega standarda. V mnogih primerih se vgrajeno sestavljanje uporablja za dostop do posebnih funkcij v centralni procesni enoti (CPU), za optimizacijo kode ali za izvajanje operacij na zelo nizki ravni, kot je izbris pomnilnika. Čeprav ima lahko določen prevajalnik ali programski jezik podporo za ustvarjanje izvedljivih datotek na več platformah, uporaba vgrajenega sestavljanja običajno omejuje program na sisteme, ki lahko uporabljajo posebna navodila za sestavljanje ali imajo ujemajočo se arhitekturo.

Obstaja več načinov, na katere jezik ali prevajalnik omogoča, da se vgrajeno sestavljanje vključi v standardno datoteko izvorne kode. Ena najpreprostejših metod je preprosto definiranje začetka montažnega bloka, po katerem se vsi ukazi razlagajo kot neposredno sestavljanje. Nekatera integrirana razvojna okolja (IDE) in prevajalniki dejansko omogočajo vgrajeni kodi uporabo spremenljivk, definiranih v programu ali funkciji, ne da bi jih prej izrecno naložili v registre.

Drug način, na katerega je vgrajeno sestavljanje definirano v izvorni datoteki, je uporaba namenske funkcije samo v jeziku montaže. V tem primeru vstavljene kode običajno ni mogoče kombinirati s kodo, ki ni sestavljena, kot je kontrolna zanka ali povratni stavek. Ko se izvaja na ta način, mora vgrajena funkcija običajno tudi eksplicitno potisniti in iztisniti spremenljivke v sklad in iz njega, da uporabi lokalne spremenljivke ali prenese vrednosti izven funkcije.

Ena najpogostejših uporab inline montažne kode je natančna optimizacija za majhne segmente programa. Odvisno od tega, kako je integrirana koda v vrstici, lahko to pomeni uporabo bolj berljivih jezikovnih ukazov, ovitih okoli vgrajene kode, ki neposredno izvede neka dejanja zelo hitro in učinkovito. Poleg tega, če je ciljni sistem znan, lahko koda uporablja registre in ukaze, specifične za strojno opremo, zaradi katerih se lahko program izvaja veliko hitreje.

Inline sestav se lahko uporablja za neposreden dostop do delov operacijskega sistema, CPE ali celo strojne opreme, kadar druge metode morda ne uspejo ali povzročijo sistemske napake. To se lahko uporablja za hitro spreminjanje okvirjev na grafični kartici ali za pošiljanje signalov neposredno na določeno prekinitev ali vrata strojne opreme. Ena od nevarnosti uporabe montažne kode na ta način pa je, da je lahko majhne napake težko najti ali povzročijo, da se program v določenih sistemih nepričakovano zruši.