Hvad er indbygget samling?
Inline montage - også kaldet inline assemblies sprog eller inline assembler - er en blok af samlingssprogkode, der indsættes direkte i funktioner og kildekode til et andet sprog. Dette gør det muligt for en programmør at indsætte en blok med rent samlingssprog i et program, hvor resten af programmet bruger et ikke-samlingssprog. Muligheden understøttes under nogle sprog - såsom C, C ++ og Pascal - men er en funktion i den specifikke kompilator, der bruges, og er ikke nødvendigvis en del af sprogstandarden. I mange tilfælde bruges inline-samling til at få adgang til specielle funktioner i den centrale behandlingsenhed (CPU), til at optimere kode eller til at udføre operationer på meget lavt niveau, såsom hukommelsesslitting. Selvom et vist compiler eller programmeringssprog muligvis har understøttelse til at skabe tværplatform-eksekverbare, begrænser brugen af inline-samling normalt programmet til systemer, der kan anvende de specifikke monteringsinstruktioner eller have matchende arkitektur.
Der er flere måder, hvorpå et sprog eller en kompilator tillader, at inline-samling indgår i en standard kildekodefil. En af de nemmeste metoder er simpelthen ved at definere starten af en monteringsblok, hvorefter alle kommandoer fortolkes som direkte samling. Nogle integrerede udviklingsmiljøer (IDE'er) og compilere tillader faktisk, at inline-koden bruger variabler, der er defineret i programmet eller funktionen uden eksplicit at indlæse dem i registre først.
En anden måde, hvorpå inline-samling defineres i en kildefil, er ved hjælp af en dedikeret montering-kun-sprogfunktion. I dette tilfælde kan inline-koden normalt ikke kombineres med ikke-montagekode, såsom en kontrolsløjfe eller returneringssætning. Når implementeret på denne måde, skal inline-funktionen normalt også eksplicit skubbe og pop-variabler til og fra stakken for at bruge lokale variabler eller videregive værdier uden for funktionen.
En af de mest almindelige anvendelser til inline monteringskode er optimering af nøjagtige punkter til små segmenter i et program. Afhængigt af hvordan inline-koden er integreret, kan dette betyde at bruge mere menneskelige-læsbare sprogkommandoer pakket rundt om inline-kode, der direkte udfører nogle handlinger meget hurtigt og effektivt. Hvis målsystemet er kendt, kan koden desuden bruge hardwarespecifikke registre og kommandoer, der kan få programmet til at udføre meget hurtigere.
Inline-samling kan bruges til at få adgang til dele af operativsystemet, CPU eller endda hardwareporte direkte, når andre metoder muligvis mislykkes eller forårsager en systemfejl. Dette kan bruges til hurtigt at skifte rammer på et grafikkort eller til at sende signaler direkte til en bestemt interrupt- eller hardwareport. En af farerne ved at bruge samlingskoden på denne måde er imidlertid, at små fejl kan være svære at finde eller få programmet til at gå uventet ned på visse systemer.