Enviado em 20/09/2012 - 18:30h
Olá pessoal !!!
#include <stdio.h>
void teste (int a, int b, int c, int d)
{
printf ("a: %d, b: %d, c: %d, d: %d\n", a, b, c, d);
}
void run (void)
{
// passa o parametro 1:
asm ("movl $100, %eax");
asm ("movl %eax, (%esp)");
// passa o parametro 2:
asm ("movl $200, %eax");
asm ("movl %eax, 4(%esp)");
// passa o parametro 3:
asm ("movl $300, %eax");
asm ("movl %eax, 8(%esp)");
// passa o parametro 4:
asm ("movl $400, %eax");
asm ("movl %eax, 12(%esp)");
// agora chama a funcao
#ifdef __WIN32__
asm ("call _teste");
#endif
#ifdef __linux__
asm ("call teste");
#endif
printf("FUNCAO TERMINADA\n");
}
int main (void)
{
run ();
// <<<<<<< aqui causa uma quabra do programa >>>>>>>
printf ("SAINDO DO PROGRAMA COM SUCESSO\n");
return 0;
}