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
Ett __asm block kan anropa C-funktioner, inklusive C-biblioteksrutiner. I följande exempel anropas biblioteksrutinen printf :
// InlineAssembler_Calling_C_Functions_in_Inline_Assembly.cpp
// processor: x86
#include <stdio.h>
char format[] = "%s %s\n";
char hello[] = "Hello";
char world[] = "world";
int main( void )
{
__asm
{
mov eax, offset world
push eax
mov eax, offset hello
push eax
mov eax, offset format
push eax
call printf
//clean up the stack so that main can exit cleanly
//use the unused register ebx to do the cleanup
pop ebx
pop ebx
pop ebx
}
}
Eftersom funktionsargument skickas på stacken skickar du bara de argument som behövs – strängpekare i föregående exempel – innan du anropar funktionen. Argumenten skickas i omvänd ordning, så de kommer från stacken i önskad ordning. Emulera C-uttrycket
printf( format, hello, world );
exemplet skickar pekare till world, hellooch format, i den ordningen och anropar printfsedan .
Avsluta Microsoft Specifik