Accueil > Forum > > > > réécrire va_start va_arg et va_list
réécrire va_start va_arg et va_list
mercredi 1 mars 2006 à 21:00:49 |
réécrire va_start va_arg et va_list

vangeurmasker
|
Voila la question est dans le titre. J'essaye de recoder un fonction
printf sans l'aide de la biblio standard du C. Je cherche donc a
remplacer les macros va_start ... par des version maison.
Si quelqu'un sait récupérer l'adresse des arguments d'une fonction.
|
|
mercredi 1 mars 2006 à 22:24:18 |
Re : réécrire va_start va_arg et va_list

Alpacha
|
Je me trompe peut-être ... mais les arguments à l'appel d'une fonction doivent être dans la pile ou les registres ... donc récupération en assembleur je pense... Cherche de ce côté là.
|
|
mercredi 1 mars 2006 à 22:41:03 |
Re : réécrire va_start va_arg et va_list

bouba
|
Salut, c'est faisable, mais bon, au niveau de l'affichage je ne sais pas trop. En tout cas, pour réaliser une fonction qui a une nombre variable d'arguments il faut faire un truc dans ce style: #include <stdio.h> #include <stdarg.h>
int printf(const char* format, ...) { va_list ptr_arguments; // parser le paramètre format de la fonction // en fonction de ceci, lire les arguments, traiter char %s, %i, etc... un par un, avant // mettre tous les %s, %i dans un tableau par[] va_start(ptr_arguments, variable); // ici 'variable' sera d'un type différent selon %s, %i, etc... par[i] == ??? while((variable = va_arg(ptr_arguments, type)) != 0) { // type dépend de 'variable', int,char, etc... switch(type_courant) { case 0: afficher_un_entier break; case 1: afficher_un_char break; ... ... } } va_end(ptr_arguments); return ....; }
Voilà, en gros je pense que ça peut se faire comme ça. Sinon, tu peux peut-être regarder le code de la libc tu trouvera la vraie définition de la fonction printf (j'ai jamais regardé, ça doit vraiment être énorme !!!).
Bonne chance. Bouba
|
|
mercredi 1 mars 2006 à 22:42:21 |
Re : réécrire va_start va_arg et va_list

bouba
|
Pfff, je viens de relire ton msg, mon post est complètement HS, je vais me coucher la !!!!
|
|
mercredi 1 mars 2006 à 22:44:12 |
Re : réécrire va_start va_arg et va_list

Alpacha
|
Lol^^ Et donc, 2eme version, tu penses que j'ai indiqué une bonne piste? Enfin j'vois que comme ça qu'on peut le faire ...
|
|
mercredi 1 mars 2006 à 23:48:01 |
Re : réécrire va_start va_arg et va_list

bouba
|
Oui, je pense que oui, les arguments sont à chopper dans le pile, j'ai fait un peut d'assembleur mais je ne me souvient plus trop. C'est net qu'il faut utiliser de l'assembleur. Dans mon msg HS, je conseillais d'aller regarder la définition de printf dans la libc, y'a sans doute aussi des chauses très intéressantes sur les fonctions va_start, va_arg et va_end, notamment la manière d'accéder aux arguments dans la pile.
|
|
mercredi 1 mars 2006 à 23:50:17 |
Re : réécrire va_start va_arg et va_list

Alpacha
|
Ah c'est bien la pile :) Bon courage à l'auteur du post, maintenant qu'il a la piste à suivre
|
|
jeudi 2 mars 2006 à 02:24:41 |
Re : réécrire va_start va_arg et va_list

TheLudo2013
|
Réponse acceptée !
Je m'étais posé la même question il y a quelques temps et j'avais découvert que va_list, va_start etc. sont déclarés au niveau du compilateur et pas de la bibliothèque standard du C. En clair tu peux les conserver même si tu recode une fonction printf ( ce que j'ai fait d'ailleur et qui fonctionne très bien )...
@++ TheLudo2013
|
|
Cette discussion est classée dans : fonction, start, list, arg, réécrire
Répondre à ce message
Sujets en rapport avec ce message
Timer [ par falcon971 ]
Bonjour, je cherche à réaliser un timer sous linux en C.Après toute mes recherche sur le net je n'ai pu trouver de version correspondant à mon cas.Je
initialiser une liste : fonction récursive ? [ par netwebzone ]
Bonjour Je dois créer une fonction qui initialise une liste chaînée à partir d'un nombre d'élement passé en paramètre pour la taille de la liste. J'ai
Liste stl et fonction constante [ par poiuytrez3 ]
Bonjour,J'ai une erreur de compilation lorsque je veux définir un cursor au début de ma liste qui est dans mon objet.La fonction est constante et le c
Fonction prenant un type comme argument (ex : va_arg ()) [ par vinc1008881 ]
Bonjour, je voudrais comment faire en C une fonction qui prend un type en argument (char int ...) comme le fais la fonction va_arg (). Merci de vos r
Fusion de cellules pour une liste chainée [ par ouhare ]
Bonjour tout le monde. J'aurais une question concernant une fonction en C que j'appelerais merge_list(). Cette fonction est supposée fusionner 2 cellu
question su r la fonction "str(Number)...." [ par franco82 ]
bonjour, je cherche a convertir un nombre entier en chaine de charactère!pour cela j'ai trouver la fonction str(...)mais jaimerais savoir quelle inclu
Problème fonction [ par Mini92 ]
Plop all :)Voilà, j'ai fais cette fonction qui récupère la valeur d'une clé du registre :/*** Retourne la valeur d'une clé dans le registre* @Key = K
DLL sou VS.net2003, puis de la DLL à la XLL [ par gadzou ]
Bonjour, Dans l'extension via DLL C++ des fonctionnalités de VBA, j'adoptais sous VS6.0 l'architecture .def + .h + .cpp, où le .def contenait <spa
Win Api : redessiner une fenêtre [ par acryline ]
Bonjour déjà Bon voilà mon problème et je seche depuis quelques heures dessus. Ce serait sympa de m'aider .Je fais un petit programme en API windows .
Pointeur de function comme paramètre d'un template [ par bouba ]
Bonjour, j'utilise une librairie C++ (www.antigrain.com) basée essentiellement sur les templates. Je n'arrive pas a appeler la fonction template suiv
Livres en rapport
|
Derniers Blogs
[WF4] ACTIVITY AVEC VUE DéTAIL MASQUéE PAR DéFAUT, VIVE WPF![WF4] ACTIVITY AVEC VUE DéTAIL MASQUéE PAR DéFAUT, VIVE WPF! par JeremyJeanson
Le code suivant est destiné à répondre à une problématique courante en Workflow : Vous avez une activité dont le designer est complexe ou dont l'affichage prend une place importante à l'écran et la possibilité Collapse/Expand ne répond pas pleinement à vo...
Cliquez pour lire la suite de l'article par JeremyJeanson [SHAREPOINT 2010] CRéER ET PACKAGER UNE APPLICATION SILVERLIGHT POUR SHAREPOINT 2010[SHAREPOINT 2010] CRéER ET PACKAGER UNE APPLICATION SILVERLIGHT POUR SHAREPOINT 2010 par neodante
L'intégration native de Silverlight dans SharePoint 2010 représente une avancée majeure dans la conception des applications sur la plateforme SharePoint. Et pour cause, Silverlight repousse les limites du Web de SharePoint en offrant une expérience plus r...
Cliquez pour lire la suite de l'article par neodante [MIX10] KEYNOTE PREMIèRE JOURNéE - WINDOWS PHONE 7 ET SILVERLIGHT 4[MIX10] KEYNOTE PREMIèRE JOURNéE - WINDOWS PHONE 7 ET SILVERLIGHT 4 par cyril
Comme l'année dernière, me revoici à Las Vegas pour Mix10. Ce matin a eu lieu le premier keynote animé par Scott Guthrie. Le keynote s'est déroulé en 2 parties : Silverlight 4.0 et Windows Phone 7 Silverlight 4.0 Le taux de pénétration de Silverli...
Cliquez pour lire la suite de l'article par cyril [MIX10] RELEASE CANDIDATE DE SILVERLIGHT 4 ET RIA SERVICES[MIX10] RELEASE CANDIDATE DE SILVERLIGHT 4 ET RIA SERVICES par Audrey
C'est enfin officiel, grâce au MIX 2010, les Release Candidate de Silverlight 4 et de RIA Services sont sorties ! Pour les télécharger, voici les liens : Silverlight 4 RC : http://silverlight.net/getstarted/silverlight-4/ RIA Services RC : http://www.micr...
Cliquez pour lire la suite de l'article par Audrey PREMIERES IMPRESSIONS SUR WINDOWS PHONE 7PREMIERES IMPRESSIONS SUR WINDOWS PHONE 7 par odewit
Il est toujours passionnant de decouvrir une nouvelle plate-forme. C'est bien entendu le cas pour Windows Phone 7. Mais au-dela de la passion technique, j'ai le sentiment qu'il s'agit d'un coup de maitre en termes d'ergonomie (tres fluide et epuree) e...
Cliquez pour lire la suite de l'article par odewit
Logiciels
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 Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|