Vkládaný assembler
Author
Albert FloresVkládaný assembler (také se používá anglické inline assembler) je v programování označení pro kód v jazyce symbolických instrukcí (asembleru) vložený mezi příkazy vyššího programovacího jazyka (např. C).
Nevýhodou vložení assembleru je obvykle ztráta nezávislosti kódu na platformě. Vkládání assembleru se provádí nejčastěji z jednoho z následujících důvodů. +more * Optimalizace, například využití instrukcí SIMD. * Přístup k instrukcím CPU (V/V porty, systémové volání), které překladač vyššího programovacího jazyka neumožňuje volat.
Následuje ukázka inline assembleru platformy x86 pro překladač GCC.
extern int errno;
int funcname(int arg1, int *arg2, int arg3) { int res; __asm__ volatile( "int $0x80" /* provedeme požadavek na operační systém */ : "=a" (res) /* jeho výsledek bude vrácen v registru eax ("a") */ "+b" (arg1), /* parametr arg1 předáme v registru ebx ("b") */ "+c" (arg2), /* parametr arg2 předáme v registru ecx ("c") */ "+d" (arg3) /* parametr arg3 předáme v registru edx ("d") */ : "a" (128) /* číslo volané služby předáme v registru eax ("a") */ : "memory", "cc"); /* informujeme překladač, co vše mohl náš kód změnit */
/* Operační systém vrací při chybě zápornou hodnotu; * my nastavíme globální proměnnou errno podle vrácené hodnoty a vrátíme -1 */ if (-125