Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Microsoft-specifikus
A beágyazott összeszerelővel szerelvénynyelvi utasításokat ágyazhat be a C és C++ forrásprogramokba további összeszerelési és csatolási lépések nélkül. A beágyazott aszmbler be van építve a fordítóba – nincs szükség külön aszmblerre, például a Microsoft Macro Assemblerre (MASM).
Mivel a beágyazott összeszerelő nem igényel külön összeszerelési és csatolási lépéseket, kényelmesebb, mint egy külön szerelő. A beágyazott szerelvénykód bármilyen hatókörben lévő C vagy C++ változót vagy függvénynevet használhat, így könnyen integrálható a program C és C++ kódjával. Mivel a szerelvénykód C és C++ utasításokkal is keverhető, olyan feladatokat hajthat végre, amelyek C vagy C++-ban nehézkesek vagy lehetetlenek.
A __asm kulcsszó meghívja a beágyazott összeszerelőt, és bárhol megjelenhet, ahol egy C vagy C++ utasítás legális. Önmagában nem jelenhet meg. Ezt egy összeszerelési utasításnak, egy kapcsos zárójelbe zárt utasításcsoportnak vagy legalább egy üres kapcsos zárójelpárnak kell követnie. A "__asm blokk" kifejezés itt bármilyen utasításra vagy utasításcsoportra vonatkozik, akár kapcsos zárójelekben, akár nem.
Az alábbi kód egy egyszerű __asm , zárójelek közé zárt blokk. (A kód egy egyéni függvény prolog-sorozata.)
// asm_overview.cpp
// processor: x86
void __declspec(naked) main()
{
// Naked functions must provide their own prolog...
__asm {
push ebp
mov ebp, esp
sub esp, __LOCAL_SIZE
}
// ... and epilog
__asm {
pop ebp
ret
}
}
Másik lehetőségként az egyes összeszerelési utasítások elé helyezheti __asm az alábbiakat:
__asm push ebp
__asm mov ebp, esp
__asm sub esp, __LOCAL_SIZE
Mivel a __asm kulcsszó egy utasításelválasztó, szerelvényutasításokat is elhelyezhet ugyanazon a sorban:
__asm push ebp __asm mov ebp, esp __asm sub esp, __LOCAL_SIZE
END Microsoft-specifikus kifejezés