Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Microsoft-specifieke
Met de inlineassemblyer kunt u instructies in de assemblytaal insluiten in uw C- en C++-bronprogramma's zonder extra assembly- en koppelingsstappen. De inline assembler is ingebouwd in de compiler — u hebt geen aparte assembler zoals de Microsoft Macro Assembler (MASM) nodig.
Omdat voor de inlineassemblage geen afzonderlijke assembly- en koppelingsstappen nodig zijn, is het handiger dan een afzonderlijke assembly. Inline-assemblycode kan elke C- of C++-variabele of functienaam gebruiken die binnen het bereik valt, zodat u deze eenvoudig kunt integreren met de C- en C++-code van uw programma. En omdat de assemblycode kan worden gecombineerd met C- en C++-instructies, kan het taken uitvoeren die lastig of onmogelijk zijn in C of C++ alleen.
Het __asm trefwoord roept de inlineassembler aan en kan voorkomen waar een C- of C++-instructie geldig is. Het kan niet op zichzelf verschijnen. Het moet worden gevolgd door een montage-instructie, een groep instructies tussen accolades, of op zijn minst een leeg paar accolades. De term '__asm blok' verwijst hier naar een instructie of groep instructies, ongeacht of deze al dan niet in accolades staat.
De volgende code is een eenvoudig __asm blok tussen accolades. (De code is een aangepaste functieprologreeks.)
// 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
}
}
U kunt ook voor elke assembly-instructie plaatsen __asm :
__asm push ebp
__asm mov ebp, esp
__asm sub esp, __LOCAL_SIZE
Omdat het __asm trefwoord een scheidingsteken voor instructies is, kunt u ook assembly-instructies op dezelfde regel plaatsen:
__asm push ebp __asm mov ebp, esp __asm sub esp, __LOCAL_SIZE
Microsoft-specifieke beëindigen