[pso] Tema1 Linux Help

Octavian Purdila pso@cursuri.cs.pub.ro
Thu, 25 Mar 2004 12:51:08 +0200


On Wednesday 24 March 2004 13:51, Cibu Cristian wrote:
> Pai n-ai tu treaba cati parametrii are functia aia. Ii dai pe toti  maxim
> 6. int sau long.
> Deci functia ta pe care o pui in locul rutinei originale are numarul maxim
> de parametrii (6) si dupa o mica bucatarie apelezi
> rutina veche la fel, cu toti cei 6 parametrii (initiali). Parametrii se
> transmit de fapt prin registrii si functia originala stie ea de ce
> registrii avea nevoie.
> Cei 6 parametrii se mapeaza peste registrii ebx ecx etc.
>
> Sper ca n-am spus prostii.
>

Nu e tocmai corect. Parametrii se paseaza in registrii, dar rutina de tratare 
a exceptiei 0x80 (care trateaza apelurile de sistem) ii muta pe toti pe 
stiva, indiferent de cati parametri are apelul de sistem (de fapt rutina de 
tratare nici nu stie cati parametri are un apel de sistem).

Astfel incat, la apelul functiei din sys_call_table, pe stiva se gasesc toti 
parametrii posibili.