Je lis du code généré en ce moment... en particulier du code généré par Visual C++ avec des options "star-wars-security" blablabla mais c'est pas le sujet du jour...
Le sujet du jour c'est ma relative incompétence face a des choses comme:
[...] .text:0069979F mov eax, 66666667h .text:006997A4 imul ecx .text:006997A6 sar edx, 1 .text:006997A8 mov eax, edx .text:006997AA shr eax, 1Fh .text:006997AD add eax, edx [...]
alors dans ecx, j'ai la valeur 0x20000, après des tentatives rapides de compréhension, je me suis bon les "magic values", j'en vois de temps en temps, ca pue la "magic value" des trucs de compilo-salaud pour tenter d'avoir de la précisions en continuant a travailler avec des entiers et en base2, bref..
En cherchant un peu je suis tombe la dessus:
Et j'ai enfin compris ce que ce petit snippet de code faisait, alors d’après vous il se passe quoi ? et quel est l’algèbre applique a la valeur dans ecx!? :) (je mettrais a jour avec une explication si le lien n'est vraiment pas clair...)
peace!
