Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Microsoft-specifik
Med inline-assemblern kan du bädda in assemblerinstruktioner i dina C- och C++-källprogram utan behov av extra sammanställning och länkning. Den inbäddade assemblern är inbyggd i kompilatorn – du behöver ingen separat assembler, till exempel Microsoft Macro Assembler (MASM).
Eftersom den inbyggda assemblern inte kräver separata assembler- och länkarsteg är det mer bekvämt än en separat assembler. Infogad sammansättningskod kan använda valfri C- eller C++-variabel eller funktionsnamn som finns i omfånget, så det är enkelt att integrera den med programmets C- och C++-kod. Och eftersom sammansättningskoden kan blandas med C- och C++-instruktioner kan den utföra uppgifter som är besvärliga eller omöjliga enbart i C eller C++.
              Nyckelordet __asm anropar inline assemblern och kan förekomma där en C- eller C++-sats är tillåten. Det kan inte visas på egen hand. Den ska följas av en sammansättningsinstruktion, en grupp instruktioner som omges av klammerparenteser, eller åtminstone ett tomt par klammerparenteser. Termen "__asm block" här refererar till instruktioner eller grupper med instruktioner, oavsett om de finns i klammerparenteser eller inte.
Följande kod är ett enkelt __asm block omgivet av klammerparenteser. (Koden är en anpassad funktionsprologsekvens.)
// 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
    }
}
Du kan också placera __asm framför varje monteringsinstruktion:
__asm push ebp
__asm mov  ebp, esp
__asm sub  esp, __LOCAL_SIZE
Eftersom nyckelordet __asm är en instruktionsavgränsare kan du också placera sammansättningsinstruktioner på samma rad:
__asm push ebp   __asm mov  ebp, esp   __asm sub  esp, __LOCAL_SIZE
Avsluta Microsoft Specifik