Mis on sisemine kokkupanek?

Inline assembler (nimetatakse ka inline assembler keeleks või inline assembleriks) on komplekteerimiskeele koodi plokk, mis sisestatakse otse teise keele funktsioonidesse ja lähtekoodi. See võimaldab programmeerijal sisestada puhta montaažikeele ploki programmi, milles ülejäänud programm kasutab mittekoostekeelt. Seda võimalust toetatakse mõnes keeles (nt C, C++ ja Pascal), kuid see on konkreetse kasutatava kompilaatori funktsioon ja ei pruugi olla keelestandardi osa. Paljudel juhtudel kasutatakse sisemist kokkupanekut keskprotsessori (CPU) erifunktsioonidele juurdepääsuks, koodi optimeerimiseks või väga madala taseme toimingute tegemiseks, näiteks mälu kustutamiseks. Kuigi teatud kompilaator või programmeerimiskeel võib toetada platvormidevaheliste täitmisfailide loomist, piirab sisemise montaaži kasutamine programmi tavaliselt süsteemidega, mis võivad kasutada konkreetseid koostejuhiseid või millel on sobiv arhitektuur.

On mitmeid viise, kuidas keel või kompilaator lubab standardsesse lähtekoodifaili lisada tekstisisese koostamise. Üks lihtsamaid meetodeid on lihtsalt defineerida montaažiploki algus, mille järel tõlgendatakse kõiki käske otsese koostamisena. Mõned integreeritud arenduskeskkonnad (IDE-d) ja kompilaatorid lubavad tegelikult sisesel koodil kasutada programmis või funktsioonis määratletud muutujaid ilma neid eelnevalt registritesse laadimata.

Veel üks viis, kuidas lähtefailis tekstisisest montaaži määratleda, on kasutada spetsiaalset koostekeele funktsiooni. Sel juhul ei saa sisemist koodi tavaliselt kombineerida koostevälise koodiga, näiteks juhtahela või tagastuslausega. Sel viisil rakendades peab sisemine funktsioon tavaliselt ka muutujaid selgesõnaliselt virnast sisse ja välja lülitama, et kasutada kohalikke muutujaid või edastada väärtusi väljaspool funktsiooni.

Üheks enimlevinud sisemise koostekoodi kasutusaladeks on programmi väikeste segmentide jaoks täpne optimeerimine. Sõltuvalt sellest, kuidas tekstisisene kood on integreeritud, võib see tähendada inimloetavamate keelekäskude kasutamist, mis on ümbritsetud tekstisisese koodiga, mis teeb mõne toimingu vahetult väga kiiresti ja tõhusalt. Lisaks, kui sihtsüsteem on teada, võib kood kasutada riistvaraspetsiifilisi registreid ja käske, mis muudavad programmi palju kiiremaks.

Inline montaaži saab kasutada operatsioonisüsteemi osadele, protsessorile või isegi riistvaraportidele otse juurde pääsemiseks, kui muud meetodid võivad ebaõnnestuda või põhjustada süsteemitõrke. Seda saab kasutada graafikakaardi kaadrite kiireks vahetamiseks või signaalide saatmiseks otse konkreetsesse katkestus- või riistvaraporti. Üks komplekteerimiskoodi sellise kasutamise ohtudest seisneb aga selles, et väikseid vigu võib olla raske leida või need võivad teatud süsteemides põhjustada programmi ootamatu krahhi.