Vad är inline montering?

Inline assembly – även kallat inline assembler språk eller inline assembler – är ett block med assemblerspråkkod som infogas direkt i funktioner och källkod för ett annat språk. Detta tillåter en programmerare att infoga ett block med rent assemblerspråk i ett program där resten av programmet använder ett icke-assembleringsspråk. Möjligheten stöds under vissa språk – som C, C++ och Pascal – men är en funktion hos den specifika kompilatorn som används och är inte nödvändigtvis en del av språkstandarden. I många fall används inline-sammansättning för att komma åt speciella funktioner i den centrala processorenheten (CPU), för att optimera kod eller för att utföra operationer på mycket låg nivå, såsom minnesblitning. Även om en viss kompilator eller programmeringsspråk kan ha stöd för att skapa plattformsoberoende körbara filer, begränsar användningen av inline-assemblering normalt programmet till system som kan använda de specifika monteringsinstruktionerna eller har matchande arkitektur.

Det finns flera sätt på vilka ett språk eller en kompilator tillåter inline-sammansättning att inkluderas i en standardkällkodsfil. En av de enklaste metoderna är helt enkelt att definiera starten på ett monteringsblock, varefter alla kommandon tolkas som direkt montering. Vissa integrerade utvecklingsmiljöer (IDE:er) och kompilatorer tillåter faktiskt att den inbyggda koden använder variabler som definierats i programmet eller funktionen utan att de explicit laddas in i registren först.

Ett annat sätt på vilket inline-sammansättning definieras i en källfil är genom användningen av en dedikerad funktion för endast sammansättningsspråk. I det här fallet kan inline-koden vanligtvis inte kombineras med icke-sammansättningskod, till exempel en kontrollslinga eller retursats. När den implementeras på detta sätt behöver den inline-funktionen också explicit pusha och poppa variabler på och av stacken för att använda lokala variabler eller skicka värden utanför funktionen.

En av de vanligaste användningsområdena för inline-monteringskod är punktoptimering för små segment av ett program. Beroende på hur inline-koden är integrerad, kan detta innebära att man använder mer mänskligt läsbara språkkommandon omslutna av inline-kod som direkt utför vissa åtgärder mycket snabbt och effektivt. Dessutom, om målsystemet är känt, kan koden använda hårdvaruspecifika register och kommandon som kan få programmet att köras mycket snabbare.

Inline-montering kan användas för att komma åt delar av operativsystemet, CPU eller till och med hårdvaruportar direkt när andra metoder kan misslyckas eller orsaka ett systemfel. Detta kan användas för att snabbt byta bildrutor på ett grafikkort eller för att skicka signaler direkt till ett visst avbrott eller hårdvaruport. En av farorna med att använda assemblykoden på detta sätt är dock att små misstag kan vara svåra att hitta eller få programmet att oväntat krascha på vissa system.