Pointer auf Funktion, Funktion aufrufen
-
Hi,
ich habe ein Programm an der Adresse 0x8200. Nun möchte ich dort hin springen. Dazu habe ich eine Funktion int execute(int (*ptrRoutine)()).
int execute(int (*ptrRoutine)()) { int i; i = (*ptrRoutine)(); return i; }
An 0x8200 steht folgender Code:
[Bits 32] org 0x8200 hang: jmp hang retf
Die Funktion execute rufe ich folgendermaßen auf:
execute(0x8200);
Aber aus irgendeinem Grund funktioniert das nicht. Also im Emulator bleibt er nicht an der Stelle 0x8200, wenn er dort überhaupt ankommt. Nur warum? Ist der Aufruf [i = (*ptrRoutine)();] der Funktion falsch?
Grüße Cheebi
-
probier mal so
int execute (void *f) { return ((int(*)(void))f)(); } ... execute ((void*)0x8200); ...
:xmas2: