Enfaite cela revient en gros à programmer en assembleur mais au lieu d'utiliser des mots clefs type mov, sub, add, etc ... Tu utilises leurs opcodes etc ...
D'une certaine façon, les instructions opcodes sont encore des abstractions numériques, qui représentent le matériel à utiliser dans le CPU, grâce à l'électricité, et le chemin que celle-ci devra parcourir dans la machine, le processeur.
Si tu veux coder sans compilateur, on entend par là : pas d'abstraction, et pas de traduction d'un "langage" A vers un langage "B", il te faudrait définir toi-même, manuellement, le chemin que le courant électrique devrait prendre dans le CPU.
Ce n'est plus réellement de la programmation à ce moment-là. C'est quelque chose qui se fait d'ailleurs, avec des circuits imprimés non programmables, c'est-à-dire dont le chemin que l'électricité devra prendre est définie dès la conception de la carte, et ce, définitivement. Mais faire ça pour un CPU, c'est presque impossible.
Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...
Les compilateurs ont été fait pour ça, à l'époque, et encore maintenant d'ailleurs. Faciliter la programmation, généralement en compilant (= traduire) un langage haut niveau (abstrait par rapport à la machine, compréhensible pour l'homme) en un autre langage plus bas niveau (moins abstrait par rapport à la machine, plus difficilement compréhensible pour l'homme).
À quoi veux-tu en venir, AzzAzae ? Pourrais-tu poser une / des question(s) plus complète(s) ?
Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...
COmment techniquement je pourrais faire de la programmation (binaire) sans compileur, car les compileur ne peuvent pas etre compiler XD. Question simple car je ne vois de reponse nul pars
Bah si. Un compilateur, c'est un programme comme un autre en matière de développement. Je suis actuellement d'en train d'en concevoir un pour le moment, pour mon propre langage d'ailleurs.
Sinon, programmer en binaire, ce n'est pas faisable aussi facilement qu'ouvrir le bloc note, d'écrire quelques lignes de 0 et de 1, puis enregistrer avec une extension .exe. Je ne pense même pas que ça soit faisable d'une telle manière.
Je n'ai pas de réponse à te donner pour la question "comment programmer en binaire", il y a bien le lien donné par R00tKiller cependant, mais ce n'est pas du binaire à proprement parler. D'ailleurs, l'expression "programmer en binaire" ne veut pas dire grand-chose, le binaire étant une base. On dit "programmer en langage machine".
- Edité par vanaur 14 mars 2019 à 20:33:44
Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...
Bah, je te l'ai déjà dit ça, étant un programme comme un autre, on le faisait "à la main" sur les anciennes machines. Grâce au jeu d'instructions du CPU (les ports logiques), on est capable de tout faire. Tu as plusieurs ports, NOR, XOR, AND, OR, ... Selon la configuration du port, et le courant qui y circule, on obtient un résultat. Mais bon, avant d'avoir réalisé un compilateur pour le langage C, on a commencé par formaliser le langage machine, le langage machine étant l'interprétation du résultat des ports logiques selon les informations électriques qui y étaient envoyées. On a alors obtenu des instructions formalisées élémentaires, dès lors, il était plus facile de concevoir des programmes. De telle manière, on a créé un autre programme dont le but serait de lire une entrée et de la compiler en instructions formalisés, en un assembleur de très bas niveau. Et ainsi de suite, jusqu'aux compilateurs que l'on connaît aujourd'hui.
Pour "programmer" en langage machine pure, ce n'est pas faisable depuis l'interface de ton ordinateur directement. Comme je l'ai dit, il faudrait le faire manuellement, dans le CPU physiquement. Ce qui n'est pas faisable. Le plus bas niveau d'abstraction que tu puisses avoir avec l'interface de ton ordinateur, c'est de l'assembleur.
Les compilateurs actuels, tu citais GCC et NASM (attention pour celui-ci, il y a une petite différence à noter au niveau de la terminologie, on dira que NASM est un assembleur (car, littéralement, il assemble un programme via un langage d'assemblage, qu'on appelle un langage assembleur)), mais il y en a d'autres encore; fonctionnent la plupart du temps en suivant ce schéma de ma création
Voilà, donc on a un fichier, le programme analyse ce fichier et crée son AST, le décompose, de façon à être plus facilement manipulable, par la suite, on vérifie la sémantique et si les types ont étés respectés, bref. Quand tout ça est fait, lorsqu'il n'y a aucune erreur de compilation, le compilateur traduit le code optimisé en un autre langage, généralement de l'assembleur, ou du c. Mais le code peut également être interprété, et dépendre d'un autre programme que l'OS que pour fonctionner.
PS: (le langage que tu vois dans les cadres, c'est le miens par exemple).
- Edité par vanaur 14 mars 2019 à 22:31:01
Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...
En gros tu as le langage X (disons C++) tout à gauche. ensuite tu as des intermédiaires (les trois langages aux milieux), et tout à droite du schéma tu as de l'assembleur. L'assembleur est ensuite assemblé en langage machine (0100101011, bref du binaire même si il est plus souvent représenté en hexadécimale)
@AzzAzae : ouvre un exécutable avec un logiciel type HxD. Le code machine c'est ça. Pour la correspondance avec les instructions assembleur, pas de mystère, on se reporte à la documentation de l'architecture processeur cible.
@vanaur : le symbole "<=>" a une signification, c'est l'équivalence. Et l'analyse sémantique n'implique pas nécessairement de type-checking.
Sinon, programmer en binaire, ce n'est pas faisable aussi facilement qu'ouvrir le bloc note, d'écrire quelques lignes de 0 et de 1, puis enregistrer avec une extension .exe. Je ne pense même pas que ça soit faisable d'une telle manière.
ça doit être faisable en ouvrant un hexedit, écrire quelques ligne de 0x0A et 0xFF (avec beaucoup de concentration parce que c'est illisible) et donner les droits d'exécution au fichier, non ?
Bon par contre @OP : Très mauvaise idée, quel est le problème que tu essaies de résoudre ?
Dream on, Dream on, Dream until your dream comes true
ça doit être faisable en ouvrant un hexedit, écrire quelques ligne de 0x0A et 0xFF (avec beaucoup de concentration parce que c'est illisible) et donner les droits d'exécution au fichier, non ?
Oui. Mais c'est pénible. Ça revient à faire de l'assembleur sans l'assembleur et sans le langage. D'ailleurs ça c'est fait dans le passé et même un passé pas si lointain pour certains matériels.
C'est juste un outil qui prend bêtement les octets les un derrière les autres et en fait une chaîne hexadécimale. Un chiffe hexadécimal, c'est 4 bits. Donc pour chaque octet (8 bits), on a 2 chiffres hexa. Ça ne fait rien d'intelligent, ça affiche juste les données brutes.
@vanaur : le symbole "<=>" a une signification, c'est l'équivalence. Et l'analyse sémantique n'implique pas nécessairement de type-checking.
Oui, en effet. J'ai regroupé les deux par soucis de simplicité.
r00tKiller a écrit:
Ensuite tu as des intermédiaires (les trois langages aux milieux)
Ce ne sont pas des langages en fait, mais juste l'affichage de l’interprétation de ce que le compilateur traite, avec en premier l'AST, ensuite la vérification de la sémantique et potentiellement des types, et enfin le code, une fois optimisé. Les deux véritables langages sont aux extrémités du schéma
- Edité par vanaur 15 mars 2019 à 16:55:39
Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...
Programmation sans compileur
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Architecte logiciel - Software craftsmanship convaincu.
Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...
Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...
Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...
Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...
Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...