Megosztás:


Beágyazott összeszerelő áttekintése

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

Lásd még

Beágyazott összeszerelő