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

  FORUM HardWare.fr
  Programmation
  ASM

  [MIPS] Recoder sprintf

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MIPS] Recoder sprintf

n°913067
fafounet
Posté le 02-12-2004 à 17:20:13  profilanswer
 

Bon voila j'ai pour projet le recodage de sprintf en MIPS (à peu pres ca http://www-inst.eecs.berkeley.edu/~cs61c/hw/proj2/)
 
Mais je me demande qqchose. Dans l'exemple ils empilent d'abord le buffer de sortie puis la chaine formatée et pour finir les valeurs correspondant.
 
Mais j'ai un souci. Comment savoir combien d'arguments il y a si la chaine a été empilée avant les arguments (dont le nombre est variable).
Si la chaine été empilée en dernier on pourrait compter les % et ainsi dépiler le bon nombre de valeurs mais la ...

mood
Publicité
Posté le 02-12-2004 à 17:20:13  profilanswer
 

n°913467
fafounet
Posté le 03-12-2004 à 07:38:34  profilanswer
 

personne n'a d'indication ? Je sais que pas mal ici préfèrent le x86 mais bon ma question n'est pas spécifique à MIPS

n°913623
Lam's
Profil: bas.
Posté le 03-12-2004 à 10:53:20  profilanswer
 

Disclaimer: je ne connais pas les MIPS.
 
Mais je ne vois pas où est la difficulté en fait. En suivant la convention du document, qui est d'empiler également le contenu de $a0-$a3, pour:
   sprintf(dest, "%d %d %d %d", u, v, w, x);
 
- dest sera dans le registre $a0 (et dans 0($sp) ),  
- la chaine format sera dans $a1 (et dans 4($sp) ),  
- u dans $a2 (et dans 8($sp) ),  
- v sera dans $a3 (et dans 12($sp) ),  
- w sera dans 16($sp) à l'entrée dans la fonction
- x sera dans 20($sp) à l'entrée dans la fonction
 
 
Donc tu n'as qu'à faire une boucle et ajouter +4 à $sp pour récupérer argument après argument (en commençant à !($sp) pour les arguments facultatifs).
 
En effet, le premier argument est posté dans l'emplacement le plus bas (en terme d'addresse mémoire), et le dernier est posté dans l'emplacement le plus haut. C'est l'inverse du sens de progression de la pile d'ailleurs (elle progresse dans l'ordre décroissant des adresses mémoires).


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

  [MIPS] Recoder sprintf

 

Sujets relatifs
sprintf en c++ ?Quelle est la difference entre un "printf" et un "sprintf" ?
aide commande...fprintf fscanf sscanf sprintf ???????????équivalent d'un sprintf (maChaine, "%08ld", monLong); en java
PHP - prereg avec sprintf ?[C] Problème à deux francs avec sprintf
Plus de sujets relatifs à : [MIPS] Recoder sprintf


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)