[pso] [Windows - Tema1]asm_ mov syscall, eax

Bogdan Ardeleanu bogdanardeleanu at gmail.com
Tue Mar 28 18:46:37 EEST 2006


Merci mult!...a mers!

On 3/27/06, Adrian - Razvan Deaconescu <razvand at gmail.com> wrote:
>
> 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
>
> _______________________________________________
> pso mailing list
> pso at cursuri.cs.pub.ro
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://cursuri.cs.pub.ro/pipermail/pso/attachments/20060328/16130ac2/attachment.html


More information about the pso mailing list