Lowlevel

Lowlevel => Softwareentwicklung => Thema gestartet von: mineorbit am 17. May 2013, 21:58

Titel: String mit Syscall übergeben
Beitrag von: mineorbit am 17. May 2013, 21:58
Hallo Lowlevelcommunity!,
Inzwischen stelle ich hier viel zu viele Fragen(die zum größten teil sinnlos sind).
Aber diesmal habe ich eine Frage bei der ich nicht mehr weiter weiß:
Es gibt ja die Funktion syscall die durch Softwareinterrupt 0x30 auslgelößt wird.
Nur kann ich dadurch bissher nur Interger übergeben. Wie kann ich nun andere Typen übergeben?
Viele Grüße und Danke für die bissherigen Antworten,
Mineorbit
Titel: Re: String mit Syscall übergeben
Beitrag von: Martin Erhardt am 17. May 2013, 22:27
Du übergibst die addresse auf den string(dafür erstellt  man in C mit dem & Operator einen Pointer den man dann zu einem Int typ casten kann).
Geht ungefähr so:

//----------------------------------------------------------user---------------------------------------------------------
char[10]string = "hello world";
char * str_ptr = &string[0];// get pointer
asm volatile ("int $0x30"::"a"((unsigned int)str_ptr));//cast pointer to int, coz we can only pass integral values over asm-inline
//----------------------------------------------------------kernel-------------------------------------------------------
char * str = (char*)cpu->eax;
kprintf(str);
Keine Garantie aber so ähnlich sollte das aussehen.
Titel: Re: String mit Syscall übergeben
Beitrag von: mineorbit am 18. May 2013, 10:03
Vielen Dank es hat geklappt!
Mineorbit