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
utilisation de va_list va_arg compliqué [ par PADYVEN ]
Bonjour, comment utilisé va_list lorsque ma fonction ressemble a cela: int ListeD_Print(ListeD *MaListeD,void (*FonctionPrint)(void *DataNoeud),...)
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 .
Livres en rapport
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|