[pso] [Windows - Tema1]asm_ mov syscall, eax
Adrian - Razvan Deaconescu
razvand at gmail.com
Tue Mar 28 07:40:15 EEST 2006
On 3/28/06, George Adrian Drumea <georgedrumea at rdslink.ro> wrote:
>
> Vezi sa nu ai variabile initializate inainte de instructiunea mov,
> daca se initializeaza prin calcul, registrul eax poate fi pierdut.
>
> Deci mov-ul trebuie sa fie prima instr din functie, ca sa fii sigur.
George are dreptate (nu ma gandisem la problema asta). Marea parte a
instructiunilor simple din C (atribuiri, adunari, incrementari, etc.) se
traduc in limbaj de asamblare in operatii cu eax (e registrul acumulator la
urma urmei - cel mai uzitat). Poti eventual sa il retii intr-o variabila
temporara, insa _neaparat_ la inceputul functiei ca sa fii sigur ca nu este
pierdut. Ceva de genul:
static void my_function (void)
{
int tmp;
int syscall;
_asm mov tmp, eax
/* diverse operatii */
/* daca acuma ai nevoie de valoare initiala a lui eax poti sa folosesti
variabila tmp */
syscall = tmp;
/* operatii cu syscall */
}
Mult mai simplu este sa-l retii de la inceput in syscall, dar daca ai alte
constrangeri poti sa folosesti o variabila temporara.
Razvan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://cursuri.cs.pub.ro/pipermail/pso/attachments/20060328/5dfe2487/attachment.html
More information about the pso
mailing list