Hallo,
ich habe da folgendes Problem bei der Parameterübergabe vom Programm zum Kernel ...
Ich habe die Parameterübergabe in meinem OS über Interrupts realisiert ... das funzte bisher ganz gut wenn ich Zahlenwerte übergab
Bsp.: Programm
int main( void )
{
unsigned int zahl1 = 100;
unsigned int zahl2 = 200;
asm("movl %0, %%ebx" :: "r" (zahl1)); // Übergabeparameter
asm("movl %0, %%ecx" :: "r" (zahl2)); // Übergabeparameter
asm("movl $0x0001, %eax"); // Funktionsnummer
asm("int $0x30"); // Systeminterrupt
return 0;
}
Hier wurden die Werte fehlerfrei übergeben und ich konnte diese im Kernel weiterverarbeiten ...
Wenn ich aber jetzt beispielsweise einen String übergeben möchte funktioniert das nicht ... hier wieder ein Beispiel wie ich es realisiert hätte:
int main( void )
{
unsigned char text[] = "Test Test Test";
asm("movl %0, %%ebx" :: "r" (text)); // Übergabeparameter
asm("movl $0x0002, %eax"); // Funktionsnummer ( 2 - Textausgabe )
asm("int $0x30"); // Systeminterrupt
return 0;
}
Wenn ich hier im Kernel das EBX - Register prüfe steht dort "nichts" ...
Ich habe schon alles versucht, über den Stack,... doch nichts hat bisher funktioniert ... kann mir vieleicht jemand von euch weiterhelfen