Was ich möchte:Eine *.bin-datei, die an einer
belibigen adresse liegt (abhängig von link-script) soll ausgeführt werden. Dieser code soll/muss kernel-rechte haben.
Wie ich es in etwa machen möchte:Ich habe im kernel eine Funktion "int exec(DWORD address);" an der ich die Addresse der *.bin übergebe. Unter dieser addresse ist der header, mit einprungadresse usw...
Jetzt möchte ich einem Funktionsprototyp "int (*funktion)(void)" diese adresse geben, und ausführen (int error = funktion()
Wichtiges zum OS- Singel-Tasking
- Anwendungen sollen kernel-rechte haben
Frage:Wie realisiere ich das??
was muss ich beachten??
Mit welchen Problemem muss ich rechnen??
ps.: mein ansatz:Aufruf:
int (*reosapp)(void);
int execute(DWORD address)
{
reosapp = (int (*)())address;
int retvalue = reosapp();
return retvalue;
}
Die Applikation:
[Bits 32]
jmp start
;;HEADERDATEN
headersize db 14 ; 1 Byte
minosversion db 00,00,03 ; 3 Byte (REOS 00.00.03)
progversion db 00,01,00 ; 3 Byte (major,minor,patch)
progname db "Test.app" ; 8 Byte
;;
start:
;;;DEBUG;;;
mov edi, 0xB8000
mov [edi], byte 0x0C
inc edi
mov [edi], byte '#'
ret