Bonjour,
est il possible de programmer un OS uniquement en c et uniquement avec ses bibliothèques standards ? Autre petite questions, existe t il dans ses bibliothèques standards une "commande" pour contrôler un pixel précisément ?
Bonjour,
est il possible de programmer un OS uniquement en c et uniquement avec ses bibliothèques standards ? Autre petite questions, existe t il dans ses bibliothèques standards une "commande" pour contrôler un pixel précisément ?
Non, il te faudra un minimum d'assembleur, ne serais ce qu'en inline.
Dans le cas de Linux, pas de fonction dans le noyau, tu as des fonctions dans les couches graphiques telles que X11. (pour ne citer que lui).existe t il dans ses bibliothèques standards une "commande" pour contrôler un pixel précisément ?
Sur Windows, tu pourras avec la couche DirectX.
Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
Mon article sur le P2V, mon article sur le cloud
Consultez nos FAQ : Windows, Linux, Virtualisation
Je me permets de modérer ce propos car il est possible d'utiliser le framebuffer directement indépendamment d'un serveur X. La meilleure source de documentation pour ce faire étant je pense les sources d'un programme qui exploite cela (mplayer peut-être ?).
Certe, je n'ai pas parlé du Framebuffer, mais celui-ci permet d'accéder si je ne me trompe à la RAM video depuis l'espace d'adressage. (et aussi de bénéficier d'accélération matérielle).
Il y a une bibliothèque directFB qui contient peut-être des fonctions de modification de pixels, mais c'est une bibliothèque, ce n'est donc pas intégré "bibliothèque standard".
La question étant :
La libc également appelée bibliothèque standard C ne contient pas de fonctions dédiées à la manipulation de pixels. Il faut compter sur des bibliothèques additionnellesexiste t il dans ses bibliothèques standards une "commande" pour contrôler un pixel précisément ?
Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
Mon article sur le P2V, mon article sur le cloud
Consultez nos FAQ : Windows, Linux, Virtualisation
Merci pour vos réponses rapides, avez-vous un livre à me conseiller pour apprendre le langage assembleur d'un maximum de processeurs ? Windows par exemple fonctionne sur pas mal de processeur, il contient des codes sources différents pour chaque processeur ou son code source est unique pour tous les processeurs et s'adapte à eux ?
Windows ne fonctionne que sur x86 et ARM pour les versions Windows RT. Mais je pense pas que se soit le même code, les applis win32 ne fonctionnant pas avec Windows RT. Les applis Modern UI utilisant une API différente, présntes dans les deux versions.Windows par exemple fonctionne sur pas mal de processeur
Si tu prends le cas de Linux qui lui gère beaucoup plus de processeurs différents, l'essentiel du code est commun, et des parties spécifiques aux CPU sont présentes. Exemple, Linux gère la pagination à trois niveaux que ne gèrent pas les CPU Intel (seulement 2 niveaux) mais que gèrent les CPU Alpha. Le code est conçu pour sauter le troisième niveau pour les CPU Intel.
Ensuite le code d'amorce est différent.
Les appels systèmes sont les même, mais la convention d'appel est adaptée au CPU, et bien que tu trouve les mêmes softs sur le différents noyaux, les versions sont adaptés au CPU, les applis sont compilés vers le CPU de destination.
Ceci n'est qu'un exemple. Je ne suis pas spécialiste du sujet non plus.
Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
Mon article sur le P2V, mon article sur le cloud
Consultez nos FAQ : Windows, Linux, Virtualisation
Puis-je vous demander une dernière chose, comment appelle t on le rassemblement de processeur ayant le même langage assembleur ?
Je pense que l'on parlera d'architecture (x86,x64, ARM)...
Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi
Ma page sur DVP
Mon Portfolio
Qui connaît l'erreur, connaît la solution.
Attention, toutes les fonctions de la bibliothèque standard ne n'appuient pas sur le noyau: celui-ci est évidemment nécessaire pour l'accès aux fichiers et l'allocation mémoire, mais les fonctions de manipulation de chaînes, de mathématiques ou de tri sont indépendantes (à supposer qu'elles n'aient pas besoin d'allocation mémoire).
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Je trouve le projet un peu trop ambitieux pour quelqu'un qui ne sait pas grand chose ^^'
Pour connaître l'assembleur en général si tu en connais un , il est facile d'en connaître un autre , mais c'est pareil pour les autres langages de programmation.
La question suppose que tout les printf sont codé de la même manière , mais en faite cela dépend énormément de la machine (quand la dite machine possède un écran evidamment).Merci beaucoup pour cette riche réponse, où trouver les commandes utilisées notamment pour programmer le printf du langage c ?
Par exemple sur les vielles consoles ,ils ne possèdent pas de mode console(ou mode texte comme tu veux) , il est obligatoire d'envoyer en VRAM un bitmap font pour afficher du texte.
Pour une image je comprend pour le RVBA , mais pour un framebuffer un RVBA c'est pas un peu étrange ?(3 octets pour les valeurs RVB et éventuellement un octet pour le canal alpha par exemple)
Je dis ça mais je n'en sais rien si de nos jours on va sur du Framebuffer en RVBA rien ne m’étonne maintenant![]()
Partager