Partage
  • Partager sur Facebook
  • Partager sur Twitter

Programmation sans compileur

Le plus bas niveau de programmation

    14 mars 2019 à 16:18:53

    Bonjour, ayant fais de l'assembleur, je me pose cette question "Programmer sans compileur est-it possible" et si oui comment.
    • Partager sur Facebook
    • Partager sur Twitter
      14 mars 2019 à 17:05:44

      Oui, tu peux coder sans compilateur.

      Pour cela tu utilise un interpréteur.

      Par exemple : Python ou Ruby.

      • Partager sur Facebook
      • Partager sur Twitter
      Developpeur Ruby/Crystal chez Plezi. Less if, more power.
        14 mars 2019 à 17:22:50

        Excuse moi je voulais parler de programmation sans compileur ou interpreteur, le plus bas niveau.

        -
        Edité par AzzAzae 14 mars 2019 à 17:23:41

        • Partager sur Facebook
        • Partager sur Twitter
          14 mars 2019 à 17:33:41

          C'est possible, mais stupide ^^

          Tu peux écrire du code machine directement : https://en.wikipedia.org/wiki/Machine_code 

          Cf https://stackoverflow.com/questions/4964975/is-it-possible-to-program-in-binary 

          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 ...

          • Partager sur Facebook
          • Partager sur Twitter
            14 mars 2019 à 19:19:45

            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.

            • Partager sur Facebook
            • Partager sur Twitter

            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...

              14 mars 2019 à 19:36:37

              Techniquement comment cela se fait des programmer en en op code
              • Partager sur Facebook
              • Partager sur Twitter
                14 mars 2019 à 20:00:19

                Techniquement cela ne se fait pas :lol:
                • Partager sur Facebook
                • Partager sur Twitter
                  14 mars 2019 à 20:12:58

                  Comment les compileur sont fait?

                  -
                  Edité par AzzAzae 14 mars 2019 à 20:13:13

                  • Partager sur Facebook
                  • Partager sur Twitter
                    14 mars 2019 à 20:18:30

                    AzzAzae a écrit:

                    Comment les compileur on fait?

                    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) ?

                    • Partager sur Facebook
                    • Partager sur Twitter

                    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...

                      14 mars 2019 à 20:20:21

                      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
                      • Partager sur Facebook
                      • Partager sur Twitter
                        14 mars 2019 à 20:33:15

                        AzzAzae a écrit:

                        Les compileur ne peuvent pas etre compiler XD.

                        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

                        • Partager sur Facebook
                        • Partager sur Twitter

                        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...

                          14 mars 2019 à 21:04:54

                          Alors comment creer un compileur sans compileur ou sinon comment programmer en language machine car tu ne m'apportes aucune réponse.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            14 mars 2019 à 21:43:36

                            AzzAzae a écrit:

                            Comment creer un compileur sans compileur ?

                            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.

                            Quelques liens qui pourraient t'intéresser :

                            J'espère que cette réponse t'a apportée plus que la précédente ^^

                            • Partager sur Facebook
                            • Partager sur Twitter

                            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...

                              14 mars 2019 à 21:50:43

                              Merci :) J'ai une dernière question. Comment sont fait les compileurs actuel, gcc, nasm et autre? Ils se basent sur d'autre compileur?

                              -
                              Edité par AzzAzae 14 mars 2019 à 21:56:54

                              • Partager sur Facebook
                              • Partager sur Twitter
                                14 mars 2019 à 22:28:23

                                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

                                • Partager sur Facebook
                                • Partager sur Twitter

                                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...

                                  14 mars 2019 à 22:36:57

                                  Donc sa compile un language abstrait en language assambleur ou c qui est lui meme compilé en binaire
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    14 mars 2019 à 22:45:25

                                    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)
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      14 mars 2019 à 22:48:49

                                      et comment ce language assembleur est transmis en binaire? Sinon que veut tu dire par trois language? Et est-il possible de creer un assembleur?

                                      -
                                      Edité par AzzAzae 14 mars 2019 à 23:00:07

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        15 mars 2019 à 5:20:13

                                        Je t’invite à lire cette page Wikipedia : tout est dit dàs l’introduction https://fr.m.wikipedia.org/wiki/Assembleur
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          15 mars 2019 à 9:15:46

                                          @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.

                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

                                            15 mars 2019 à 9:22:08

                                            Salut

                                            vanaur a écrit:

                                            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 ?

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                            Dream on, Dream on, Dream until your dream comes true
                                              15 mars 2019 à 9:36:08

                                              romantik a écrit:

                                              ç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.

                                              -
                                              Edité par Ksass`Peuk 15 mars 2019 à 9:40:24

                                              • Partager sur Facebook
                                              • Partager sur Twitter

                                              Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

                                                15 mars 2019 à 12:04:25

                                                Une nouvelle question, comment sont fait les hexeditor et autre.

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  15 mars 2019 à 12:48:08

                                                  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.

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter

                                                  Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

                                                    15 mars 2019 à 16:54:18

                                                    Ksass`Peuk a écrit:

                                                    @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

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter

                                                    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é.
                                                    • Editeur
                                                    • Markdown