Partage
  • Partager sur Facebook
  • Partager sur Twitter

Sans bibliothèque.

Sujet résolu
2 février 2006 à 23:56:27

Sallut!

Donc, je regardais tranquillement la fonction printf, et je trouvais que sa structure ressemblais vraiment à toutes autres fonctions que je peut fabriquer moi même. (Bon, je crois que c'est parfaitement normal :p )
Alors, je me suis dit
«J'envois du texte, des variables...
je me demande si derrière printf il n'y aurais pas un bidule qui affecte mon texte à une variable, analyse chaque caracthère de mon texte et, lorsqu'il tombe devant un "%ld"(par exemple), il le remplace par la valeur de ma variable.
Et à la fin, il affiche le texte par un "équivalent" plus primitif de printf.»


Donc, je me demandais ça ressemblerais à quoi faire un programme C sans bibliothèques(si c'est possible), qu'elles son les limites(si il y en a...).

Est-ce que les bibliothèques stdio.h et stdlib.h "importent le language", ou juste des fonctions qui font des trucs qui servent à tout les fois?
Dans le genre, «Si ton programme fait pas au moins un de ces trucs, c'est qu'il ne fait rien... donc, pourquoi les ré-écrire?»

Est-ce que printf fait vraiment partit de la "base" du language C, où fait partit des trucs "proposé" plus haut?

Bon, on vas vraiment commencer à penser que j'ai aucun but dans la vie :p
http://www.siteduzero.com/forum-83-15723-organisation-d-adresse-et-vairable-pas-au-programme.html


(J'ai un doute sur la clareté de mon texte :S )
  • Partager sur Facebook
  • Partager sur Twitter
3 février 2006 à 11:09:23

Bah c'est bien de se poser des questions :D

La fonction printf analyse en effet les %ld et cie et les remplace par les valeurs indiquées dans les autres paramètres. C'est une fonction à nombre de paramètres variable (non expliqué dans le cours)

Pour faire ça, tu peux lire ça :
http://casteyde.christian.free.fr/cpp/cours/online/x600.html
Plus bas sur la page, paragraphe 1.6.7


Après, oui la fonction printf fait appel au système d'exploitation, elle utilise donc une fonction de plus bas niveau certainement encore plus chiante et compliquée à utiliser. Donc non, on ne peut pas faire de programme sans utiliser de lib, vu que même printf appelle une fonction prévue par windows (ou linux ou mac) pour afficher du texte dans la console.

Si tu es aussi passionné par le bas niveau que tu sembles l'être, je te recommande de te lancer dans l'asm. Au mieux tu trouveras ça tellement horrible que tu reviendras vite fait au C avec plein de librairies de partout, au pire tu trouveras ça génial et tu te mettras à programmer des printf en asm (mais je te préviens il en faut des lignes de code pour y arriver !).

Personne ne programme en C sans librairies. On ne réinvente pas la roue à chaque fois justement parce que c'est hyper chiant et qu'au lieu de passer un an à faire ton logiciel il t'en faudrait 50 ;)
  • Partager sur Facebook
  • Partager sur Twitter

If you'd like to join us, read "How do we work at OpenClassrooms"! :)

3 février 2006 à 12:01:18

Même en ASM on ne peut pas faire sans les syscalls au minimum ; d'accord, ce ne sont pas des bibliothèques mais on est bien obligé de déléguer une partie des tâches à l'OS. De plus les syscalls sont possibles en C par le biais de fonctions donc c'est relativement useless de programmer en ASM *pour faire ça* faut avouer...
Après, si tu parles de *tout* reprogrammer en C, c'est pratiquement possible avec un peu d'ASM si tu recodes tout le système.
  • Partager sur Facebook
  • Partager sur Twitter
4 février 2006 à 0:29:03

Citation : M@teo21

Si tu es aussi passionné par le bas niveau que tu sembles l'être...


Heu... oui.
en fait, si j'ai encore rien fait en assembleur, c'est probablement juste parce que j'ai pas encore trouvé suffisament de documentation pour... en fait, justre un p'tit tuto, mais, c'était expliqué comme si on savais déjà...
  • Partager sur Facebook
  • Partager sur Twitter
4 février 2006 à 0:33:29

C'est vrai que l'assembleur sans prof c'est pas évident !
Tu veux des cours PDF ?
http://iutbminformatique.free.fr/cours.pdf.php?dossier=Architecture
Tu peux regarder les tp et le debugger !
Nous on utilie Turbo comme compilateur !
  • Partager sur Facebook
  • Partager sur Twitter
4 février 2006 à 4:41:10

yop

Moi je te conseille avant de te lancer dans l'asm de lire deux trois cours sur le fonctionnement de ton PC, par exemple le fonctionnements des adresses de mémoires, des codes binaires, complement à deux et hexa, la notion d'octet et de bits...

Personnelement je trouve ça très difficile de se lancer dans l'asm sans savoir ce que l'on fait, pourquoi on fait ça et dans quel but, et quels en seront les repercussions au niveau de la mémoire.
  • Partager sur Facebook
  • Partager sur Twitter
2 avril 2021 à 10:44:01

Bonjour, même si le sujet date...

"Donc non, on ne peut pas faire de programme sans utiliser de lib"

"Personne ne programme en C sans librairies."

...Je suis juste pas du tout d'accord avec ça, un exemple : http://sylvainmahe.site/understandWhatIsModule.html

Dans lequel justement l'idée est de s'affranchir des bibliothèques afin d'être indépendant, de favoriser la portabilité, de comprendre le fonctionnement intime des microcontrôleurs, etc... et on arrive au final à faire plus de choses plus rapidement une fois que des fonctions génériques sont dégrossies et écrites.

-
Edité par SylvainMahé2 2 avril 2021 à 10:59:34

  • Partager sur Facebook
  • Partager sur Twitter
2 avril 2021 à 12:25:34

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL