Vkládaný assembler
Vklá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ů.
- 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 <= res && res < 0) { errno = -res; res = -1; } return res; }
Tento článek je příliš stručný nebo postrádá důležité informace. Pomozte Wikipedii tím, že jej vhodně rozšíříte. Nevkládejte však bez oprávnění cizí texty. |