Quel est l'assembleur le plus rapide ?

Résolu
epineurien Messages postés 83 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 22 mars 2011 - 25 mars 2008 à 08:58
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 - 16 août 2008 à 00:24
Salut à tous !
Une nouvelle question , suite à quelques infos trouvées sur le net ...
J'utilise MASM32 , mais de nombreux sites dises qu'il produit un code moins rapide que d'autre (comme NASM ou TASM) , du coup je pense sérieusement changer , mais je croyais tout les assembleurs produisait le même code ? un mov eax,eax ne donnera pas le même éxécutable suivant le compilateur qu'on utilise ? les opcodes sont pourtant fixés non ?
Si il y a des différences , savez vous lequel , de NASM ou de TASM (ou un autre) , est le plus rapide ?
Merci ...

<hr size="2" width="100%" />Visitez le site de ma librairie graphique :  http://hydrargyrum.ifrance.com  http://hydrargyrum.ifrance.com !

27 réponses

edfed Messages postés 69 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 22 mars 2010 1
28 mars 2008 à 19:30
la vitesse d'un code depend pas vraiment du compilo, mais plus du codeur.
il faut connaitre les instructions pairables.
si un imul doit etre mis dans le code, il faut prevoir des instructions autours pour utiliser la latence. si on met deux ou trois imul à la suite, c'est pas bon. la latence du imul sera multipliée pas 3. certaines instructions peuvent etre executées par deux sans aucun probleme.
generer du code 16 bits sous 32bits, ça ramlenti le µP.
l'inverse est aussi valable.
puis, un code plus petit tourne plus vite car le chargement en cache se fait plus vite.

lea calcule un pointeur. c'est une usine à pointeur bien utile quand on ne sait plus trop où l'on va. puis ça peu servir de multiplication au meme titre que les shr et l peuvent servir de division.
meme que le xor, il peut etre utilisé pour effacer un registre.
et or/and peuvent etres utilisés pour tester si un registre est egal à zero.

ce n'est pas leur raison d'etre, mais ça marche, donc, on utilise.

pour ce qui est de l'automatisme du compilo, qui va generer le bon opcode meme en cas d'instruction bizarre (lea eax,[eax*9]) c'est une bonne chose qui permet de gagner en clareté... et diminue sensiblement la taille du fichier source, et donc, accelere la compilation de quelques cycles...
je crache pas dessus pour des codes qui font plus de 5000 lignes.

j'utilise fasm depuis des années, je ne saurai dire ce que donnent les autres x86 tant je ne les essayerai jamais.

certaines versions de fasm ont etée completement bugguées mais ce n'est plus le cas depuis un an.
donc... fasm definitivement.
0
_dune2_ Messages postés 141 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 20 avril 2011
31 mars 2008 à 16:24
salut tout le monde,

perso je rejoins BruNews sur ce point-ci :
Si on code de l'asm, c'est pour écrire de l'asm interprétable par le CPU et pensé de cette manière. Si l'assembleur doit traduire du code (comme le "lea eax,[eax*9]") alors autant faire du C bien plus lisible.

J'utilise régulièrement de l'asm dans du traitement d'image là où je peux optimiser l'agencement des opérations de manière plus fine, et ce n'est pas pour voir le compilo modifier mon code ...

Donc pour moi, la question du meilleur compilo asm qui fait du code plus optimisé qu'un autre est une question sans fondement car si on fait de l'asm ce n'est pas pour laisser le compilo optimiser.


++dune2
0
edfed Messages postés 69 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 22 mars 2010 1
31 mars 2008 à 19:54
non mais de toute façon, cette question n'a pas de sens.
l'assembleur le plus rapide, c'est le chinois du quartier, il assemble un pc en  minutes. :)
ou sinon, c'est celui pour le cray, un cray, ça booste grave....
0
edfed Messages postés 69 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 22 mars 2010 1
31 mars 2008 à 19:55
en 5 minutes

desolé, numlock etait pas actif...

me:
nop
ret
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
edfed Messages postés 69 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 22 mars 2010 1
31 mars 2008 à 20:21
maintenant, une question plus en rapport:

quel est le compilateur asm le plus minable?

Nasm?
Masm?
Tasm?
Gasm?
Octasm?
Fasm?
GCC?
A86?
Vasm?
Pasm?
Qasm?
....

me:
nop
ret
0
edfed Messages postés 69 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 22 mars 2010 1
1 avril 2008 à 06:00
puis je ne peu m'empecher d'ajouter que si vous codez en mz ou autre, vous etes dans l'erreur totale car ça genere du code sans aucune maitrise des origines.

perso, je ne connait que la directive org pour le format du code.

du code lineaire et totalement depourvu de sections sans reélle maitrise de l'addresse de base.

ça pose certains problemes pour faire des gros programmes ou des importations, mais là aussi, les importations sont trop peu maitrisables, mieu vau faire un include de la librairie a utiliser.

je planche sur une librairie du type linux int80 mais sans int.
pour pouvoir compiler des .com sans que ça prene la totalité de l'executable. par une liaison avec un os maison.

le gros soucis c'est de rester compatible avec les vieilles becanes qui on encore leur mots a dire ( j'ai deux 386 et un 486 qui attendent que ça) donc, ce topic devien completement hors topic. donc, j'en profite pour exercer mon talent de troll.

on a tous un talent caché. :)
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
16 août 2008 à 00:24
@ [auteur/BRUNEWS/39449.aspx BruNews] : Tout à fait d'accord avec toi ! De nos jours, quand on code en ASM, on est censés coder correctement ... Je trouve que si on sait faire ça, pas besoin d'optimiseur ! Sinon faut sérieusement penser à passer au C
_________________________________________________________________________
VB.NETis good ...VB6is better<
0
Rejoignez-nous