Accueil > Forum > > > > inverser une chaine
inverser une chaine
vendredi 12 mai 2006 à 19:46:12 |
inverser une chaine

MrdJack
|
salut, je suis sur un projet de calculatrice me permettant de faire des
calculs avec des nombres tres grands. chaque nombre est stocké dans la
memoire sous forme de chaine de caractere.
une étape importante des opération est d'inverser la chaine de caractere du nombre : "0123456789" devient "9876543210"
pour celà, j'ai d'abord programmé ça en c mais sur de tres grands
nombres, ca prends trop de temps à mon gout. j'ai donc commencé à
utiliser l'asm. apres quelques tutos et une bonne doc sous la main,
j'en suis venu à ceci :
__inline int asmReverse(char *psz)
{
int i=strlen(psz)-1,i2=i/2+i%2;
__asm {
mov ecx, i2
mov eax, psz
mov ebx, eax
add ebx, i
loop_start:
mov dl, [eax]
mov dh, [ebx]
mov [eax], dh
mov [ebx], dl
inc eax
dec ebx
loop loop_start
mov eax, psz
}
}
ca fonctionne, mais je me demandais à tout hasard si j'avais
pas oublié un truc fondamental permettant d'optimiser tout ça pour que
ca aille plus vite.
j'ai aussi essayé en faisant un test dl, dh
suivit d'un saut jz si ya pas besoin d'echanger mais c'etait pas
forcément un gain de temps au final avec des nombre aléatoires.
merci d'apporter votre point de vue.
|
|
vendredi 12 mai 2006 à 19:47:19 |
Re : inverser une chaine

MrdJack
|
oups c'est __inline char *asmReverse(char *psz)
|
|
vendredi 12 mai 2006 à 21:13:28 |
Re : inverser une chaine

BruNews
|
C'est clair qu'on peut optimiser, je te laisse traduire:
void ReverseStr(char *psz) { char *c = psz, a; while(*c) c++; // c FINIT SUR LE ZERO FINAL while(psz < --c) {a = *psz; *psz++ = *c; *c = a;} }
ciao... BruNews, MVP VC++
|
|
vendredi 12 mai 2006 à 21:15:22 |
Re : inverser une chaine

BruNews
|
M'étonnerait aussi que ce soit là que tu gagnes quoi que ce soit par rapport au compilo.
ciao... BruNews, MVP VC++
|
|
Cette discussion est classée dans : chaine, mov, eax, ebx, psz
Répondre à ce message
Sujets en rapport avec ce message
Différences ??? [ par Arecibo ]
Voila je debute en assembleur et j'aimerais savoir quelles sont les différences entre :-> mov eax, ebx et mov eax, [ebx]-> mov esi, eax et mov [esi],
j'ai un prob avec mon buffer ; ya pas d'amuses gueules (masm32) [ par papiboff ]
bj si je mets le buffer "somme " en dd avec charge eax et que j'ajoute deux 'dec ebx ' , ben , marche pas correctement ; (pêrqué ???? = en french) sv
[linux] read and open [ par sheorogath ]
Bonjour,je débute un peu en assembleur et j'essaie de faire un programme qui lit le début d'un fichier dont le nom est entré par l'utilisateur.Voici l
Petit problème pour comparer (cmp) [ par smok1360 ]
Bonjour à tous,Pour commencer, j'espère de ne pas avoir choisis le mauvais lieu pour poster, j'ai un petit peu hésité Donc, j'ai décidé d'apprendre l'
Aligner des données pour le SSE [ par epineurien ]
Bonjour à tous !J'ai un petit problème avec du code dont je mesure la vitesse: suivant la compilation, la vitesse varie du simple au double .J'expliqu
ecrire dans un fichier avec assembleur [ par karimusthb ]
Bonjour, j'essaye d'ecrire dans un fichier avec assembleur,[MASM] le probleme c que en resultat j'ai un fichier ecrit en caractére ASCII comment faire
"MOV WORD, EBX" Comment faire ? [ par Nowid50 ]
Bonjour,Je suis débtant en assembleur et après quelques recherches, je ne trouve pas mon bonheur.Mon application requiert que je face l'instruction su
Masm32 - adressage direct - soucis ! [ par ouadji ]
Bonjour à tous,mov eax , [11223344h]cette instruction existe ! registre de segment utilisé ... DS ... par défaut !Code machine de cette instruction :
conversion minuscule [ par safwensafwen ]
C'est unprogramme qui fair la conversion en minuscule en utilisant la pile je n'arriv
Inversion de chaîne [ par Bidou ]
Bonjour à tous,A vrai dire je suis plutôt nouveau en asm et pas très bon lol. Mais bon, faut bien commencer un jour hein. Pour me faire la main, j'ai
Livres en rapport
|
Derniers Blogs
COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE?COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE? par Matthieu MEZIL
Avec EF, les vues doivent être mappées sur des entity types. Le problème c'est que les entity types doivent avoir une clé. Avec EF, nous avons les complex type qui n'ont pas de clé mais les vues ne peuvent pas être mappées dessus. Avec EF4, il est possibl...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL?[WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL? par JeremyJeanson
Certain d'entre vous on peut être vécu cette situation embarrassante après quelques temps passer avec WF4 : Au début avec mon " ActivityDesigner" , tout allait bien. Et puis un jour j'ai au des problèmes de " Binding" . Alors nous sommes allé sur le site ...
Cliquez pour lire la suite de l'article par JeremyJeanson MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ?MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ? par junarnoalg
La prochaine session de MyTIC aura lieu à Namur, le 23 mars prochain. Pendant presque une heure, nous parlerons de SharePoint 2010. Voici un aperçu du programme.
Accueil : 17h30 Début de la session : 18h00 - Les nouvelles int...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
RE : ASSEMBLEURRE : ASSEMBLEUR par solleil
Cliquez pour lire la suite par solleil RE : ASSEMBLEURRE : ASSEMBLEUR par ghuysmans99
Cliquez pour lire la suite par ghuysmans99
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
Comparez les prix

HTC Magic
Entre 429€ et 429€
|