Assembly syscall

Elég kezdő vagyok még Assembly-ben.
A kérdésm valószinűleg nagyon egyszerű:
A time syscall (13-as) visszatérési értékét hogy tudom kiiratni a képernyőre?

Köszönöm: Düri

Hozzászólások

hol? milyen OS? milyen platformon? stb. stb.

linux, i386:

unsigned int t;
__asm__ __volatile__("int $0x80\n\t" :"=a"(t) : "a"(13));
printf("t=%u\n", t);

de miért kell neked assembly? van C-ben egy ilyen függvény hogy syscall().

na, hát az van, hogy a syscall i386-oson szoftmegszakítás (0x80-as megszakítás). Bemenetnél az eax-ban van mindig a syscall number, a többi paramétert regiszterekben kell átadni (afaik). Az eredményt szintén az eax-ban kapod vissza.

itt le van irva minden: http://www.lxhp.in-berlin.de/lhpsysc0.html

ezek szerint van 1 bug az előbbi kódban :) (ebx-et le kell nullázni)