Autor Thema: String mit Syscall übergeben  (Gelesen 7311 mal)

mineorbit

  • Beiträge: 55
    • Profil anzeigen
Gespeichert
« 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

Martin Erhardt

  • Beiträge: 165
    • Profil anzeigen
Gespeichert
« Antwort #1 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.
« Letzte Änderung: 17. May 2013, 22:32 von Martin Erhardt »

mineorbit

  • Beiträge: 55
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 18. May 2013, 10:03 »
Vielen Dank es hat geklappt!
Mineorbit

 

Einloggen