View Full Version : [Assembler]E' più efficiente LEA o MOV offset?
demonbl@ck
03-06-2010, 20:09
Ciao a tutti, sto iniziando a programmare qualcosina in assembler per portarmi avanti col programma di sistemi, e già che ci sono vorrei scriverlo il più ottimizzato possibile, poi lo avvio sul 486 e osservo l'esplosione :O
Ho letto che LEA dx,stringa è meno efficiente di MOV dx,OFFSET stringa, perchè quest'ultimo usa una costante mentre il LEA il valore se lo deve calcolare.
E' vero?
cdimauro
03-06-2010, 21:36
Entrambe le istruzioni dovrebbero richiedere 1 ciclo di clock sul 486, per cui la risposta è negativa.
La LEA sulla carta dovrebbe eseguire il calcolo dell'indirizzo, ma in realtà questo è deputato a un ben preciso stadio della pipeline, per cui puoi considerarlo "gratuito".
rеpne scasb
03-06-2010, 23:14
■
demonbl@ck
04-06-2010, 00:52
Entrambe le istruzioni dovrebbero richiedere 1 ciclo di clock sul 486, per cui la risposta è negativa.
La LEA sulla carta dovrebbe eseguire il calcolo dell'indirizzo, ma in realtà questo è deputato a un ben preciso stadio della pipeline, per cui puoi considerarlo "gratuito".
MOV utilizza un byte in meno rispetto a LEA (5 contro 6), e' quindi un'istruzione piu' compatta rispetto a LEA (miglior utilizzo della cache). Usa quindi MOV (tranne per addizioni e shift).
Ok, se ho capito bene a livello di cicli di clock su cpu 486+ non cambia niente, però mov usa un byte in meno in memoria.
Corretto?
cdimauro
04-06-2010, 08:14
Sì.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.