gor00
Messages postés2Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention22 juillet 2004
-
22 juil. 2004 à 10:57
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
1 août 2004 à 09:17
Salut à tous,
Je me posé une question à propos des programmes en assembleur réalisés à l'aide de MASM32. Cet outil propose plusieurs fonctions et librairies qui facilitent grandemand la programmation.
Comme par exemple le bien connu "invoke" pour utiliser les API.
Je me pose alors des questions quand aux performances obtenues avec un tel outil.
Est-ce que le fait d'utiliser de tels fonctions et les API de Windows ne rapproche pas les performance du programme, sa vitesse d'exécution et sa taille d'un programme fait en C???
Ou bien est-ce que celà reste quand même plus rapide que le C???
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 22 juil. 2004 à 12:05
Pour sur que ce n'est pas un prog asm ecrit a coups de invoke qui fera mieux qu'un bon code C compile par VS 2003.
MASM32 permet d'ecrire du vrai asm, on choisit facilite ou performances.
ToutEnMasm
Messages postés587Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention13 décembre 20223 22 juil. 2004 à 14:29
Salut,
En ce qui concerne Masm32 les macros ne ralentissent en rien la vitesse du code , le compilateur les transforme en code asm normal.
masm32 est le langage assembleur du visual C++ de microsoft et je ne crois pas qu'il y ait des différences de vitesses notables.
Pour le reste voir mon site ,http://perso.wanadoo.fr/luce.yves/ l'example hello word est dans masm32\example1.
la suite des exemples ne manque pas d'intérêt.
Editmasm une fois mis en place compile sans problème.
ToutEnMasm
Vous n’avez pas trouvé la réponse que vous recherchez ?
Neitsa
Messages postés3Date d'inscriptionlundi 7 juillet 2003StatutMembreDernière intervention 1 août 2004 1 août 2004 à 02:57
Bonjour,
Comme le dit ToutEnAsm, les macros ne ralentissent rien. Par exemple la macro "invoke" ne fait que remplacer le couple Push/call. Niveau exécution c'est exactement pareil, par contre niveau lisibilité du code, on y gagne !
Certains refusent mordicus d'utiliser la syntaxe en langage évolué de MASM (je pense notemment aux .if .elseif .else .endif; .while .endw, etc.) pensant que cela "dénature" l'Asm. Pourtant le compilo fait un remarquable boulot d'optimisation sur ce genre de routine, et comme dit précédemment c'est nettement plus lisible au niveau du source...
J'ai définitivement adopté les Macros et le la syntaxe de haut niveau proposé par MASM ! :)
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 1 août 2004 à 09:17
Exact que invoke remplace Push/call avec cette difference essentielle qu'on ne controle pas du tout la parallelisation (pairing) des instructions. C'est jusque 8 cycles de penalite par AGI Stall sur un P4.
Pour faire du lisible on ecrit en C et ce le sera beaucoup plus.
Si on ecrit direct en ASM on se doit de traquer chaque cycle sinon il ne reste que la frime de dire qu'on le fait en omettant de dire qu'on produit un tres mauvais asm.