Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Microsoft-spezifisch
Ein __asm Block kann C-Funktionen aufrufen, einschließlich C-Bibliotheksroutinen. Im folgenden Beispiel wird die printf Bibliotheksroutine aufgerufen:
// 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
}
}
Da Funktionsargumente an den Stapel übergeben werden, verschieben Sie einfach die erforderlichen Argumente – Zeichenfolgenzeiger im vorherigen Beispiel – vor dem Aufrufen der Funktion. Die Argumente werden in umgekehrter Reihenfolge verschoben, sodass sie in der gewünschten Reihenfolge aus dem Stapel kommen. So emulieren Sie die C-Anweisung
printf( format, hello, world );
In diesem Beispiel werden Zeiger auf world, hellound formatin dieser Reihenfolge , und dann wird aufgerufen printf.
Ende Microsoft-spezifisch