Co je Inline Assembly?
Inline assembly - také nazývaný inline assembly language nebo inline assembler - je blok kódu jazyka assembleru, který se vkládá přímo do funkcí a zdrojového kódu pro jiný jazyk. To umožňuje programátorovi vložit blok čistého jazyka sestavení do programu, ve kterém zbytek programu používá jazyk bez sestavení. Schopnost je podporována v některých jazycích - například C, C ++ a Pascal -, ale je funkcí konkrétního použitého kompilátoru a nemusí být nutně součástí jazykového standardu. V mnoha případech se inline shromáždění používá k přístupu ke zvláštním funkcím v centrální procesorové jednotce (CPU), k optimalizaci kódu nebo k provádění operací na nízké úrovni, jako je blending paměti. Přestože určitý kompilátor nebo programovací jazyk může mít podporu pro vytváření spustitelných souborů napříč platformami, použití inline sestavy normálně omezuje program na systémy, které mohou používat specifické instrukce pro sestavení nebo mít odpovídající architekturu.
Existuje několik způsobů, jak jazyk nebo kompilátor umožňuje začlenit sestavení inline do standardního souboru zdrojového kódu. Jednou z nejjednodušších metod je jednoduše definování začátku montážního bloku, po kterém jsou všechny příkazy interpretovány jako přímá montáž. Některá integrovaná vývojová prostředí (IDE) a kompilátory skutečně umožňují vloženému kódu používat proměnné definované v programu nebo funkci, aniž by je nejprve explicitně načtily do registrů.
Dalším způsobem, jak je inline sestavení definováno ve zdrojovém souboru, je použití funkce vyhrazené pouze pro jazyk sestavení. V tomto případě nelze vložený kód obvykle kombinovat s kódem bez sestavení, jako je například kontrolní smyčka nebo návratový příkaz. Když je implementována tímto způsobem, inline funkce také obvykle potřebuje explicitně tlačit a popovat proměnné na a mimo zásobník, aby používaly lokální proměnné nebo předávaly hodnoty mimo funkci.
Jedním z nejčastějších způsobů použití kódu vložené sestavy je přesná optimalizace malých segmentů programu. V závislosti na tom, jak je integrovaný kód integrován, může to znamenat použití více příkazů jazyka, které jsou čitelnější pro člověka, omotané kolem inline kódu, který přímo a rychle vykonává nějakou akci velmi rychle a efektivně. Navíc, pokud je znám cílový systém, může kód použít hardwarově specifické registry a příkazy, díky nimž může být program spuštěn mnohem rychleji.
Inline assembly lze použít pro přímý přístup k částem operačního systému, CPU nebo dokonce hardwarových portů, pokud by jiné metody mohly selhat nebo způsobit systémovou chybu. To lze použít k rychlé změně rámců na grafické kartě nebo k odeslání signálů přímo na konkrétní přerušení nebo hardwarový port. Jedním z nebezpečí používání kódu sestavy tímto způsobem je však to, že malé chyby mohou být obtížné najít nebo způsobit neočekávané zhroucení programu v určitých systémech.