Hi
Ich möchte von einer C-Funktion aus eine in ASM geschreibene Funktion aufrufen, die widerum eine C-Funktion aufruft. Dabei soll jeweils ein argument (das selbe) übergeben werden:
C-Funktion, die die ASM-Funktion aufruft:
ASM-Funktion, die eine weitere Funktion aufrufen soll und "argument" übergeben soll
die C-Funktion "cfunktion02"
Das Problem:
der "hinweg" funktioniert. allerdings wird "funktion03" 2 mal aufgerufen, und dann hängt alles.
Wo liegt das Problem??
Compiler: gpp
Assembler: NASM
System: keins, freestanding
Ich möchte von einer C-Funktion aus eine in ASM geschreibene Funktion aufrufen, die widerum eine C-Funktion aufruft. Dabei soll jeweils ein argument (das selbe) übergeben werden:
C-Funktion, die die ASM-Funktion aufruft:
Code:
asmfunktion = (int (*)(int))address;
int retvalue = asmfunktion(argument);
ASM-Funktion, die eine weitere Funktion aufrufen soll und "argument" übergeben soll
Code:
mov ebp, esp
mov ebx, [esp+4]
push ebx ;jetzt ist das argument für _main
call _cfunktion02
pop ebx ;argument runterholen
mov eax, 0x00FF00FF ;TEST
ret
die C-Funktion "cfunktion02"
Code:
int cfunktion02(int argument)
{
funktion03 = (int (*)(int,int)) argument;
int x = funktion03(0, 0);
return 0;
}
Das Problem:
der "hinweg" funktioniert. allerdings wird "funktion03" 2 mal aufgerufen, und dann hängt alles.
Wo liegt das Problem??
Compiler: gpp
Assembler: NASM
System: keins, freestanding