Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1838 connectés 

  FORUM HardWare.fr
  Programmation
  ASM

  Aide pour l'assembleur ARM

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aide pour l'assembleur ARM

n°1812864
poche44
Posté le 17-11-2008 à 08:46:47  profilanswer
 

Bonjour,
 
Voilà je suis débutant en assembleur, je voulais savoir si ce que j'ai fais est juste :
 
Enoncer :  Le sous-programme Chaine_comparer retourne une valeur permettant de classer deux chaînes de caractères dont les adresses sont passées en paramètres :
      si les deux chaînes sont identiques, le résultat est nul ;
      si la première chaîne vient avant la seconde dans l’ordre lexicographique, le résultat est strictement négatif ;
      si la première chaîne vient après la seconde dans l’ordre lexicographique, le résultat est strictement positif.
Donc je doit traduire en assembleur ce bout de programme en C
 

Code :
  1. int Chaine_comparer(char* ch1, char* ch2) {
  2.    while(*ch1 != 0 && *ch2 != 0 && *ch1 == *ch2) {
  3.       ch1++;
  4.       ch2++;
  5.    }
  6.    return *ch1 - *ch2;
  7. }


 
et voici ce que j'ai fais en assembleur, est-ce juste??
 

Code :
  1. Chaine_comparer:
  2. /* Sauvegarde des anciennes valeurs valeurs */
  3. stmb sp!,{r4,r5}
  4. Chaine_comparer_boucle:
  5.  ldrb r4,[r0], #1
  6.  ldrb r5,[r1], #1  /* Charge les valeurs pointees par r0 et r1 dans r4 et r5 */
  7.  cmp  r4, #0
  8.  beq  Chaine_comparer_fin
  9.  cmp  r5, #0
  10.  beq  Chaine_comparer_fin /* Si r4 ou r5 == 0 alors une des cahine est finie on termine le programme */
  11.  cmp  r4, r5
  12.  beq  Chaine_comparer_boucle /* Si r4 = r5: les caracterses st identique: on reboucle */
  13.  bne  Chaine_comparer_fin /* sinon, caracteres differents => fin de traitement */
  14. Chaine_comparer_fin:
  15.  sub r0,r4,r5 /* Attention: Eventuel pb de format: valeur signee!!!: A tester */
  16. /* Rechargement des valeurs sauvegardees */
  17. ldmia sp!, {r4,r5}
  18. /* Retour au programme appelant */
  19. mov pc, lr


 
Merci d'avance

mood
Publicité
Posté le 17-11-2008 à 08:46:47  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  ASM

  Aide pour l'assembleur ARM

 

Sujets relatifs
[ C ] Bonjour, aide pour traduire en C .[expression reguliere] besoin d'aide
[résolu] aide sur une fonctionAide pour un chat RMI en Java
Aide pour un devoirAide sur requête SQL
besoin d'aide pour un site svp.aide pour un programme JAVA (débutante)
T'Chat particulier, besoin d'aide !Aide boucle While Encore ?? je pete un cable ... :'(
Plus de sujets relatifs à : Aide pour l'assembleur ARM


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR