Je ne connais pas beaucoup la programation. Même, je crois que je fait une faute d´hortographe dedans...
Mais moi, ce qui m´intéresse, c´est la programation binaire. Je sais juste que sa fonctionne avec des un et des zero. Je trouve que sa a l´air passionnant :D ( je ne niaise pas)
Je voudrait savoir comment faire quelque chose a partir d´aucun programe sur un PC. ( même pas DOS)
Comment un ordi qui n´a rien peut afficher des choses sur l´écrant. Il faut programmé les pixles avec des pinces? :s Si c´est comment sa, je me trouve autre chose a faire
.
Bien sur, je ne compte pas faire du binaire en vidant mon PC d´absolument tout.
J´espère qu´on va comprendre ce que je demande de connaitre... et me répondre ensuite.
Apprendre le binaire avant de connaître d´autres langages de programmation, c´est un peu comme piloter un avion sans jamais avoir pris le volant d´un autre véhicule :s
Tu devrais t´intéresser à d´autres langages, quitte même à acheter des livres qui expliquent comme fonctionne un PC, pour info :
101100100011010110110100000000101100110100100001
demande à ton PC d´afficher 5 à l´écran, alors imagine pour des tâches plus ardues ![]()
Chaos a raison, même si ce qu´il dit est plus ou moins n´importe quoi...
Alors : quand on programme, on utilse un langage de programmation qui est ensuite convertit par un compilateur ( par exemple Visual C++) en code machine ( qui est ce que tu appelle du code binaire). Mais on représente toujours le code machine soit en héxadécimale ( et non pas en binaire, car c´est bcp plus pratique, mais absolument équivalent), soit avec des petit mots qui remplace les valeurs héxa. On parle de mnémonique, et c´est le langage assembleur.
Donc, ce qui t´interesse apparement, c´est le langage assembleur. Seulement ce que dit chaos est vraie, c´est probablement le langage de prog le plus difficile à maitriser ( quoi que le brainfuck est peut-être pire...) et si tu ne conait pas la programmation avant, tu auras bcp de mal.
Donc tu devrait commencer par du Basic, ou du C avant de passer à l´assembleur si ça te plait.
A ce propos Kelios ( kelios est le spécialiste de la question) je me demandait, ton OS, tu l´écrit en ASM ? mais quels logiciel utilise tu pour le convertir en code machine pur et le rendre bootable ? ça existe ce genre de prog, où tu le fait à coup d´héditeur héxa sur une disquette ?
" A ce propos Kelios ( kelios est le spécialiste de la question) je me demandait, ton OS, tu l´écrit en ASM ? mais quels logiciel utilise tu pour le convertir en code machine pur et le rendre bootable ? ça existe ce genre de prog, où tu le fait à coup d´héditeur héxa sur une disquette ? "
Mon OS est fait ( ou va être fait?
) en C et ASM.
nasm permet d´assembler en mode plat, ça convertit juste les opcodes et c´est tout, y´a pas d´header, rien. Ça s´appelle le flat binary.
Au niveau du Kernel C, il est compilé par gcc et linké par ld, de DJGPP.
Effectivement: le ld ( linker de gcc) originel sur Linux possède la super capacité de linker en flat bin ^^
Cepandant, les portages windows coupent tous dans le beurre au niveau des features. Surtout Mingw. Cepandant, DJGPP est le seul à pas trop en faire et surtout, *à garder la capacité de faire du flat bin*.
Comme tu le vois, dans le genre d´outils dispos pour faire ça, on a pas beaucoup de choix même si ils sont assez performants. Ah, et puis théoriquement, je pourrais assembler/compiler/linker/copier sous linux sans problème, vu que tous mes outils sont gratuits e portés Linux/Windows.
À la fin, j´utilise un sympa programme, partcopy. C´est un logiciel très performant et très dangereux si tu fais pas gaffe vu qu´il copie à l´endroit exact où tu lui indique le contenu d´un fichier. Ça peut être un autre fichier ( pour concaténer des fichiers donc), mais surtout, écrire à l´offset de ton choix dans n´importe quel disque dur ou disquette. Moi ça m´est utile pour concaténer le kernel en C avec le bootloader, puis à aller le foutre au premier secteur de la disquette de boot.
Et évidemment, tu peux foutre en l´air un disque dur si tu fais pas gaffe. Surtout que les offsets sont en hexa et que si t´y es pas habitué, tu peut aller foutre la merde aisément. L´intéret est que ça automatise si tu le fous dans un . bat par exemple.
Sinon j´ai plein d´autres outils pour vérifier et voir des machins. Entres autres Bochs pour tester mon OS et un éditeur hexa performant mais payant, Hex Workshop, mais dispo en trial, qui a la faculté d´aller scruter les disques, secteur par secteur. Utile pour vérifier des possibles troubles au niveau du disque.
Ah et dernier truc Cocio: je te dirais de faire de l´assembleur, c´est très équivalent mais avec un peu plus de fonctionalités. C´est comme du langage machine mais un peu enrichi. Ça t´évite de faire de longues étapes pour rien.
Sinon, si tu compte faire un exécutable à coup d´éditeur hexadécimal ( éditeur binaire ça existe de nos jours?), bonne chance et arme toi de documentation sur le format de ton exécutable. Moi en tout cas je ne te retiendrai pas, au contraire ça doit être une expérience très enrichissante sur tous points de vue. Cepandant, je vois mal comment apprendre le langage machine de nos jours. C´est déjà limite avec l´assembleur
Justement, c´est surement la solution: apprend l´assembleur, techniquement, quand tu connais l´assembleur, tu connais à peu près tout du langage machine. Sauf que va falloir aussi que tu aille te chercher de la référence pour ton ordinateur pour connaitre la constitution des opcodes de ton architecture machine.
Ais-je été clair?
Kelios
---------
Merci Kelios.
Cocio, si tu ne lit pas le texte de Kelios, lit les deux dernier paragraphe, ils ont pour toi.
Et si tu tiens à faire du langage machine, l´un des moyen le plus simple est de le faire avec QuickBASIC, qui permet d´écrire véritablement du langage machine et de l´exécuter assez simplement.
Les premiers programmeurs n´itulisait pas du
C++ et le reste.
Comment ils on programmer les langages de programmation plus évolué?
Comment que quand que tu écrit 101100100011010110110100000000101100110100100001 l´ordi sais que tu lui demande d´écrire 5?
Est-ce qu´il aurait été possible de le configuré autrement?(le 5)
C´est vrai que je devrait plutot allez m´informer sur comment est fait ma machine...
Alors, si j´ai bien compris, l´assembleur c´est un peut comme le binaire, sauf que tu n´est pas pogné avec des 1 et des 0. Tu peut, par exemple, faire un 4 du premier coup de clavier.
101100100011010110110100000000101100110100100001 je doute fort que ca écrive un 5. Je crois que c´est n´importe quoi, même si je ne pourrait pas l´affirmer.
Et effectivement, chaque langage plus évolué est souvent écrit à la base avec un langage plus complexe, on dit de plus bas niveau.
Comment l´ordi sait ce qu´il doit faire, c´est une question d´electronique extremement complexe. Et la réponse serait bien trop longue pour qu´elle tienne ici ( sans compter, que je ne le sais pas pour un truc aussi compliqué qu´un ordi).
Non, non, le code binaire que je vous ai donné affiche ( ou plutôt demande d´afficher) un 5 à l´écran. Je l´ai vu dans un livre qui parlait du C++ ( allez savoir ce que ça fout là), où justement le gars relevait le problème suivant : comment parler à son ordi ?
Et le tout premier langage informatique a été écrit en hexadécimal.
Est-ce que c´est quelqu´un qui a décidé qu´il configurait le 5 comme sa, ou bien il aurait été impossible de le faire autrement?
Non le langage binaire a été inventé par les dinosaures, c´est bien connu ^_^
Le langage binaire est un langage informatique, avec des règles et une syntaxe à respecter, donc écrire 5 sur l´écran en binaire ne peut se faire autrement ( je pense).
Non, avec ce truc pour écrire 5, qu´est ce qu´il se passe :
d´abord on mets quelquepart en mémoire un code qui veut dire 5 ( mais ce code est arbitraire, il aurait pu être trés différend, ici c´est 35 en héxa). Puis il dit a l´ordi d´afficher ce qu´il y a dans la mémoire, a savoir, le 5.
Mais le 5 lui même ( qui n´est PAS ce bout de code) aurait pu être écrit autrement.
Mais cette suite de 1 et du 0, c´est juste du langage machine MS-DOS ( comme le montre le INT 21 qui termine ce code).
Le premier langage n´a pas le moins du monde été le binaire! ou plutot, ca n´a pas de sens car le binaire n´est pas un langage, c´est juste la manière dont les ordi enregistre les chiffre.
Dire que le premier langage était écrit en héxa, n´est pas vrai non plus, car le premier langage était le langage machine du premier ordi, et à l´époque, il n´y avait pas de clavier, de souris, ou d´écran et en fait, pas d´entrée sortie du tout. Pour le programmer, il fallait modifier l´ordi lui même en branchant des relai par ci par là ( qui constituait la mémoire en quelques sorte) pour qu´il fasse ce qu´on voulait.
Ensuite, avec un degré de complexité bien supérieur, on en ait effectivement arrivé au point ou on pouvait foire bouffer du langage machine à l´ordi, mais poitn de code héxa ici, car l´héxa implique une représentation or nous n´avons toujours pas d´écran ou de clavier : les carte perforé servait d´interface homme machine. La position des trou ayant une valeurs qui correspondait soit à un ordre donné à la machine, soit à un résultat.
disons que dans le programme 101101..... Tout les code déroule de la structure de l´ordi donc il aurait été impossible de les faire autrement une fois qu´on a décidé de faire l´ordi comme ça ( mais là aussi c´est une convention ancienne mais pas absolue) par contre la convention pour le 5 lui même aurait pu être n´importe quoi, mais ce qu´il y a de bien avec l´informatique c´est quand les gens suivent les même convention pour ouvoir s´échanger des donnée, et ça implique qu´un 5 soit toujours enregistré de la même manière.
Le binaire est imposé par l´électronique, parce que nos ordinateurs actuels fonctionnent avec des transistors qui n´acceptent en entrée que 2 état : 0 et 1.
Ensuite, l´hexa n´est que l´équivalent en base 16 du binaire qui est en base 2, choisi parce que par convention on utilisait 8 bits ( 8 chiffres binaires) pour coder un caractère.
Pour le reste, je rejoint dnob700 pour les explications.
un ordinateur fonctionne avec un langage machine simple de structure :
F A
avec F un nombre sous 8 bits ( 1 octet)
et A un complement ( en général 16 bits 2 octets)
F est l´instruction, A est l´adresse ou y appliquer, c´est un verbe et un complément.
les fonctions de base sont éléctroniques, elles sont appelées grace a des interruptions ou les instruction F = IN ou F = OUT
Si tu es intéressé par tout ce qui est architecture d´ordinteur, sur mon site, j´ai tapé un cours complet a dl :
http://www.fvirtman.fr.st
rubrique :
FAC / aide licence d´info
et tu télécharges
technologie des ordinateurs, volume 1 et 2
bonne lecture ![]()
Doom3 à aussi été fait en binaire pour linux. On peut m´expliquer? ( j´attend une réponse à quoi ne doit pas être très clair, je ne parvient pas à posé ma question correctement)
Je crois qu´il a été simplement convertit en binaire, mais ce n´est pas ce que je veut savoir(juste pour dire que ce n´est pas ma question).
Sinon merc pour le lien et vos réponse à mes autres questions.
doom est fait en C.
personne ne programme en binaire
rare sont ceux qui programment en assembleur déja...
pour info, programmer en binaire ( code machine) reviendrait a écrire un fihcier EXE octet par octet...
Il est fait en C, mais y´a une version binaire pour linux(daprès ce que j´ai lut)
L´avantage que je verrais du binaire, c´est que je ne serait pas pogné avec des langage que je ne comprend pas puisque c´est moi qui aurait crée le mien.
Mais j´ai crus comprendre qu´il y aurait des problèmes de compatibilité.
Je crois comprendre que le C++ est vraiment le langage de programmation dominant. Je croyait qu´aucun n´était plus important qu´un autre.
Je crois que je vait apprendre sa plutot que d´autre chose comme le binaire ![]()
Parce que tu comptais créer tn propre langage informatique ? ![]()
J´ai compris ! !!
ce qu´on appelle un fichier binaire dans le monde de linux ( binaries files) et plus générallement en anglais, c´est tout simplement les exécutables. les programme quoi !
Ca n´a rien a voir avec la manière dont ça a été programmé, c´est le nom qu´on leur donne parce qu´une fois que le programme est compilé ( avec un compilateur de C par exemple) il s´agit effectivement de code machine donc, en quelques sorte un langage binaire, et que c´est cela qui donne son nom au fichier.
" Mais j´ai crus comprendre qu´il y aurait des problèmes de compatibilité." c´est exactement ça, parcequ´un fichier binaire donné ne marche qu´avec un seul OS et sur une seul plateforme donné ( comprendre, le type du processeur).
Pa rexemple, même si deux ordinateur font tourné Linux, si l´un à un processeur Pentium et l´autre un motorola, alors un programme pourrait tourner sur l´un, mais ne pourra pas tourner sur l´autre.