Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
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