Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: rizor am 18. March 2009, 01:05

Titel: syscall aufrufen
Beitrag von: rizor am 18. March 2009, 01:05
Nabend zusammen,

ich habe gerade meine Syscalls implementiert.
Ich benutze die Register EAX-EDX und den Stack als Übergabeparameter.
Mein Problem ist nun, wie rufe ich den Syscall im Userspace auf.
Mir ist klar, dass ich das mit int 0x80 mache.
Ich kann ja nur nicht einfach die Register in inline-assembler ändern.
Danach läuft ja nichts mehr.
Wie müsste so ein Code denn aussehen?
Habe leider auch nichts in den anderen OS gefunden.
Titel: Re: syscall aufrufen
Beitrag von: kevin am 18. March 2009, 11:18
http://lowlevel.brainsware.org/wiki/index.php/Inline-Assembler_mit_GCC

Am besten spezifizierst du einfach die Register als Input-Parameter, dann kümmert sich gcc drum, daß das alles klappt und die Register gesichert sind. Ansonsten kannst du auch selbst in deinem Assemblercode dafür sorgen und die benutzten Register in die Clobber-Liste aufnehmen, dann sichert gcc sie auch weg. Oder du pusht sie selber auf den Stack und stellst sie wieder her.

Viele Wege führen nach Rom. ;)
Titel: Re: syscall aufrufen
Beitrag von: rizor am 18. March 2009, 14:36
Danke.
Jetzt funktioniert es