Bonjour,
Dans un bout de code c++, j'initialise un entier (non signé) 32bit à la valeur
le code assembleur donne donc:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 T1 = 0xd76aa478;
plus tard dans le code, j'additionne la valeur de T1 à un autre entier (non signé) 32bit
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 mov DWORD PTR [eax+100], -680876936 ; d76aa478H
sachant que cette valeur T1 va rester constante lors de mes calculs, je me
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 add ebp, DWORD PTR [eax+100]
suis dit (naviement) que je pourrais remplacer l'instruction ci dessus par :
..afin de me débarasser d'un accès à la mémoire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 add ebp, -680876936
Mais apparament cette technique n'optimise rien du tout, au contraire, le code est plus lent à l'éxécution.
(sachant que j'ai en réalité 64 variables sembalables à T1, appelées à maintes reprises)
Ma question : pourquoi est-ce plus lent?
Merci pour vos avis éclairés =)
EDIT : testé avec les valeurs ecrites sous forme décimale non-signée. le resultat est le même
Partager