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, einschließlich C-Bibliotheks routinen aufrufen.Im folgenden Beispiel wird die printf routine Bibliothek an:
// 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 auf dem Stapel übergeben werden, drücken Sie einfach die erforderlichen Argumente einen Zeichenfolgenzeiger mit dem vorhergehenden Beispiel, bevor die Funktion aufgerufen wird.Die Argumente werden in umgekehrter Reihenfolge abgelegt werden, sodass sie den Stapel in der gewünschten Reihenfolge ab.Um die C-Anweisung emulieren
printf( format, hello, world );
Das Beispiel legt Zeiger auf worldhello, und format, in dieser Reihenfolge und ruft dann printfan.
Microsoft ENDES bestimmten