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
- 4933 megtekintés
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().
- A hozzászóláshoz be kell jelentkezni
Linux, i386
Assembly csak tanulás szinten kell, hogy ezt is ismerjem :)
Düri
- A hozzászóláshoz be kell jelentkezni
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)
- A hozzászóláshoz be kell jelentkezni
Ja, hogy az eredmény az eax-ban van...
Na ezt nem tudtam.
Köszi!
- A hozzászóláshoz be kell jelentkezni
Az eredmeny szinte mindig az EAX-ban van :)
"No boom today. Boom tomorrow. There's always a boom tomorrow. What? Look, somebody's got to have some damn perspective around here. Boom, sooner or later. BOOM!" -- Lt. Cmd. Ivanova
- A hozzászóláshoz be kell jelentkezni