Chaines de caractere [ASM+C] - ASM - Programmation
Marsh Posté le 13-03-2008 à 06:58:47
Oui, c'est possible, sinon l'assembleur inline ne serait pas d'une grande utilite...
Deja, il faut que tu nous dises quel compilateur tu utilises. Visual? gcc?
"a part des entiers je n'arrive pas a voir comment manipuler quoi que ce soit" -> Ca tombe bien, t'as besoin de rien d'autre
Poste deja un bout de code, qu'on parte pas de zero.
Marsh Posté le 13-03-2008 à 15:58:52
En fait j'y suis arrivé depuis hier j'ai d'autres problèmes
J'utilise GCC sinon pour info
Et pourquoi vous dites tous que le C inline est pas utile ? Par exemple si j'écris:
Code :
|
Je vais 8 fois plus vite que si j'écris:
Code :
|
Alors ne criez pas "Ouais mais heu STRTOLOWER ça existe dans telle biblio", je m'en fou c'est juste un exemple
Sinon est t-il possible de manipuler des nombres flottants ?
Greg
Marsh Posté le 13-03-2008 à 19:03:41
Heu ... juste comme ca, t'as bien active les optimisations sur ton compilo?
Marsh Posté le 13-03-2008 à 21:02:51
Arf, et ton code C n'est pas très optimisé. Genre le strlen(), il est certainement évalué à chaque itération. Passer par un pointeur plutôt qu'un déréférencement de tableau, pourrait encore économiser quelques cycles.
Genre je me suis amusé avec un petit bench : 10240 chaines de 1M sur un Core Duo@2.00GHz
ASM : 26s (ta version)
C O0: 72s
C 02: 24s
C O3: 17s
En C, j'ai légèrement modifié ton algo :
Code :
|
Marsh Posté le 13-03-2008 à 21:11:20
Harkonnen a écrit : peine de mort pour la syntaxe AT&T |
+1. Ca rend l'assembleur difficilement lisible et compréhensible. Faudrait presque y mettre des commentaires
Marsh Posté le 13-03-2008 à 21:40:45
Mais je comprends pas, vous voulez dire que la syntaxe C est déja suffisament optimisé coté puissance de calcul pour ne même pas avoir à réécrire le tout en assembleur ? Je veux dire, apprendre l'assembleur aujourd'hui ça ne sert donc strictement à rien (A part les acces de bas niveau) ?
Marsh Posté le 13-03-2008 à 21:41:14
GreGoireP a écrit : Mais je comprends pas, vous voulez dire que la syntaxe C est déja suffisament optimisé coté puissance de calcul pour ne même pas avoir à réécrire le tout en assembleur ? Je veux dire, apprendre l'assembleur aujourd'hui ça ne sert donc strictement à rien (A part les acces de bas niveau) ? |
ca sert à comprendre ce qui se passe et donc à pas ecrire du C de merde.
Marsh Posté le 13-03-2008 à 21:43:42
Oui ok je vois
Et pour cette histoire d'optimisation du code par GCC, bien sûr je suis conscient que y'a des limites mais y'a vraiment des trucs à activer ou d'autres programmes utilisables pour faire ce genre de chose ?
Marsh Posté le 13-03-2008 à 21:53:34
Ok, mais, toujours d'un point de vue optimisation automatique, y'a quelque chose d'autre à faire que -03 ?
Marsh Posté le 13-03-2008 à 22:14:43
ca depend de ce que tu cherche à faire. Y a pas de miracle, gcc fait ce qu'il peut mais tu gagneras trjrs à optimiser proprement à la main les choses qui comptent : déroulage de boucle, tiling mémoire, alignement etc
Marsh Posté le 12-03-2008 à 23:57:48
Bonjour !
Imaginons que j'écrive:
char essai[100]="Hello world";
Plus bas, dans de l'ASM (integré au code C), est t-il possible à partir de l'adresse (essai) par exemple de parcourir les caractères un à un (jusqu'au '\0' ici rajouté systématiquement) afin d'appliquer un quelquonque traitement écrit directement en assembleur à chaque caractere ?
La doc de l'ASM inline est assez obscure et j'avoue qu'à part des entiers je n'arrive pas a voir comment manipuler quoi que ce soit ^^
Merci!
Grégoire