epineurien
Messages postés83Date d'inscriptionsamedi 21 mai 2005StatutMembreDernière intervention22 mars 2011
-
25 mars 2008 à 08:58
cs_ghuysmans99
Messages postés3982Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 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 ...
edfed
Messages postés69Date d'inscriptionmercredi 12 décembre 2007StatutMembreDernière intervention22 mars 20101 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.
_dune2_
Messages postés141Date d'inscriptionmercredi 19 juillet 2006StatutMembreDernière intervention20 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.
edfed
Messages postés69Date d'inscriptionmercredi 12 décembre 2007StatutMembreDernière intervention22 mars 20101 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....
edfed
Messages postés69Date d'inscriptionmercredi 12 décembre 2007StatutMembreDernière intervention22 mars 20101 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.
cs_ghuysmans99
Messages postés3982Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 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<