Il l'a pas compilé, mais écrit directement en code machine.
Le coin des codeurs :nerd:
Modérateur : DojoSuperHeroes
- Tardigrade
- Super Mario 64
- Messages : 4529
- Inscription : 25 janv. 2017 15:34
- Contact :
Re: Le coin des codeurs :nerd:
- Golden cube
- Super Mario Galaxy
- Messages : 8155
- Inscription : 05 juil. 2002 21:16
- Localisation : sud ouest 8)
Re: Le coin des codeurs :nerd:
En assembleur plutôt je dirais. C'est déjà un peu plus sympas 

- Tardigrade
- Super Mario 64
- Messages : 4529
- Inscription : 25 janv. 2017 15:34
- Contact :
Re: Le coin des codeurs :nerd:
Et qu'est-ce qui assemble ton code assembleur ? 

- nazlurf
- Super Mario 64
- Messages : 3783
- Inscription : 17 déc. 2002 10:19
- Localisation : Sélestat
Re: Le coin des codeurs :nerd:
toi, t'as jamais fait d'assembleur ... 
c'est des instructions tellement pourries, que ça se résume à prend l'octet là et mets le là, puis mets celui-là là ... tu donnes les instructions au processeur directement (et pour le coup, pour moi, assembleur = code machine, ou c'en est vraiment pas loin ... après, si qq1 me dit que je me trompe, je feindrai ma vieillitude et que la dernière fois que j'ai fait de l'assembleur, c'était il y a plus de 20 ans et parce qu'on m'y avait forcé)

c'est des instructions tellement pourries, que ça se résume à prend l'octet là et mets le là, puis mets celui-là là ... tu donnes les instructions au processeur directement (et pour le coup, pour moi, assembleur = code machine, ou c'en est vraiment pas loin ... après, si qq1 me dit que je me trompe, je feindrai ma vieillitude et que la dernière fois que j'ai fait de l'assembleur, c'était il y a plus de 20 ans et parce qu'on m'y avait forcé)
- Tardigrade
- Super Mario 64
- Messages : 4529
- Inscription : 25 janv. 2017 15:34
- Contact :
Re: Le coin des codeurs :nerd:
Ben si j'en ai fait.
Code assembleur = instructions processeur sous forme de texte (ex : movb $0x61,%al). Non lisible directement par le processeur, parce que c'est du texte.
Code machine = l'équivalent en binaire. Lisible par le processeur.
Assembleur = programme qui convertit les instructions texte en binaire.
D'où la question : comment on a codé le 1er assembleur ? Réponse : en code machine (i.e. en binaire).
Code assembleur = instructions processeur sous forme de texte (ex : movb $0x61,%al). Non lisible directement par le processeur, parce que c'est du texte.
Code machine = l'équivalent en binaire. Lisible par le processeur.
Assembleur = programme qui convertit les instructions texte en binaire.
D'où la question : comment on a codé le 1er assembleur ? Réponse : en code machine (i.e. en binaire).
- Golden cube
- Super Mario Galaxy
- Messages : 8155
- Inscription : 05 juil. 2002 21:16
- Localisation : sud ouest 8)
Re: Le coin des codeurs :nerd:
Tu parles de compilateur à l'origine. L'assembleur ne se compile pas 
Et avant d'être capable de passer la barre du bootstrapping un compilateur est bien écrit en assembleur (pas toujours vrai de nos jour mais vu qu'on parle du premier compilo...)
Après faut pas confondre compilateur et assembleur
Sinon autant remonter la chaine jusqu'à l'alternateur pour être safe
Voire la création des éléments composant l'alternateur

Et avant d'être capable de passer la barre du bootstrapping un compilateur est bien écrit en assembleur (pas toujours vrai de nos jour mais vu qu'on parle du premier compilo...)
Après faut pas confondre compilateur et assembleur

Sinon autant remonter la chaine jusqu'à l'alternateur pour être safe

Voire la création des éléments composant l'alternateur

- KirbyX
- Super Mario 3D World
- Messages : 17124
- Inscription : 05 déc. 2002 13:47
- Localisation : Green Greens
Re: Le coin des codeurs :nerd:
J'étais arrivé à comprendre le message de Tardigrade avec ses explications pour les teubés et t'as tout fait foirer golden... 

- Golden cube
- Super Mario Galaxy
- Messages : 8155
- Inscription : 05 juil. 2002 21:16
- Localisation : sud ouest 8)
Re: Le coin des codeurs :nerd:
Tout ce que je dis c'est que Tardigrade répond à la question comment on fait une omelette par 'avec une poule'. En disant au final qu'on se demandait comment faire des oeufs 
Fin bref... Désolé si c'est un peu rash je viens encore de passer une soirée à corriger la merde d'un énième presta expert en pipeau

Fin bref... Désolé si c'est un peu rash je viens encore de passer une soirée à corriger la merde d'un énième presta expert en pipeau
- Konino
- Super Mario Sunshine
- Messages : 5085
- Inscription : 25 nov. 2002 22:19
- Localisation : Quelquepart ou il ne fait forcement bon vivre,un coin paumé entre une centrale nucléaire et des fous
Re: Le coin des codeurs :nerd:
Du coup je sais même pas si j'ai eu ma réponse. 

- nazlurf
- Super Mario 64
- Messages : 3783
- Inscription : 17 déc. 2002 10:19
- Localisation : Sélestat
Re: Le coin des codeurs :nerd:
ok ... du coup, c'est pas le fabricant du processeur qui doit fournir l'assembleur ? Puisque ce sera dédié / dépendant du matériel ? Et donc, dans la logique, nvidia, intel et consorts doivent à chaque nouveau processeur réécrire le bouzin (bon, peut-être pas à chaque processeur, mais chaque famille / version des processeurs) ?Tardigrade a écrit : 28 mars 2022 18:47 Ben si j'en ai fait.
Code assembleur = instructions processeur sous forme de texte (ex : movb $0x61,%al). Non lisible directement par le processeur, parce que c'est du texte.
Code machine = l'équivalent en binaire. Lisible par le processeur.
Assembleur = programme qui convertit les instructions texte en binaire.
D'où la question : comment on a codé le 1er assembleur ? Réponse : en code machine (i.e. en binaire).
- Tardigrade
- Super Mario 64
- Messages : 4529
- Inscription : 25 janv. 2017 15:34
- Contact :
Re: Le coin des codeurs :nerd:
Si tu parles juste de compilateur (langage haut niveau), Golden cube a raison : en assembleur.
Si ta question incluait aussi l'assembleur, ce qui a plus de sens selon moi, cf. ma réponse.
@nazlurf : J'ai pas les détails, si quelqu'un a la réponse, ça m'intéresse.

- Golden cube
- Super Mario Galaxy
- Messages : 8155
- Inscription : 05 juil. 2002 21:16
- Localisation : sud ouest 8)
Re: Le coin des codeurs :nerd:
Vu que ta question c'était sur le premier compilateur : en assembleur.
En plus c'est partiellement faux vu que généralement tu développes la majorité d'un compilo dans le langage qu'il compile.
C'est le principe du bootstrapping : tu écris un compilateur très basique qui te permet de coder ses nouvelles fonctionnalités dans son propre langage.
Puis fait en couche d'oignon jusqu'à avoir la version finale.
De nos jours on passe plutôt par des compilateurs de compilateurs genre yacc ou bison.
Si tu veux la poule, les premiers assembleurs devaient être mécaniques vu qu'ils datent de la période des cartes à trous.
Mais pour un assembleur applicatif c'est un peu pareil que les compilos dans la philo, tu écris un bootstrap en code machine et le reste dans ton langage assembleur.
- Konino
- Super Mario Sunshine
- Messages : 5085
- Inscription : 25 nov. 2002 22:19
- Localisation : Quelquepart ou il ne fait forcement bon vivre,un coin paumé entre une centrale nucléaire et des fous
Re: Le coin des codeurs :nerd:
Ok merci. 

- Golden cube
- Super Mario Galaxy
- Messages : 8155
- Inscription : 05 juil. 2002 21:16
- Localisation : sud ouest 8)
Re: Le coin des codeurs :nerd:
Vu que les jeux d'instructions sont assez standard (x86, ARM, ...) les assembleurs existent déjà en général.Tardigrade a écrit : 29 mars 2022 09:08Si tu parles juste de compilateur (langage haut niveau), Golden cube a raison : en assembleur.
Si ta question incluait aussi l'assembleur, ce qui a plus de sens selon moi, cf. ma réponse.
@nazlurf : J'ai pas les détails, si quelqu'un a la réponse, ça m'intéresse.![]()
Si tu veux rajouter de nouvelles instructions tu pars sur une base existante en assembleur.
Enfin du coup ça évolue pas trop et il n'y a pas besoin de sortir un assembleur pour chaque CPU.
C'est un peu plus dynamique au niveau des microcontrôleurs mais bon ce n'était pas le sujet.
Et oui en général le fabriquant de la puce te refile l'assembleur qui va bien en général à travers un soft maison.
- Cyrare
- Satoru Iwata
- Messages : 26823
- Inscription : 15 avr. 2002 13:04
- Localisation : Paris, France
Re: Le coin des codeurs :nerd:
Je suis d'accord avec Tardi.
Je ne trouve aucune définition d'un compilateur qui exclurait la conversion d'un code assembleur en fichier exécutable. Et donc, nécessairement, le premier compilateur a été créé dans un langage directement compréhensible par la machine, donc en binaire.
PAR CONTRE, ce premier compilateur a probablement été réfléchi en assembleur, écrit en assembleur, puis converti à la main en binaire, écrit en binaire. Et donc, c'est exactement ce qu'a dit Tardi et ça répond parfaitement à la question.
Je ne trouve aucune définition d'un compilateur qui exclurait la conversion d'un code assembleur en fichier exécutable. Et donc, nécessairement, le premier compilateur a été créé dans un langage directement compréhensible par la machine, donc en binaire.
PAR CONTRE, ce premier compilateur a probablement été réfléchi en assembleur, écrit en assembleur, puis converti à la main en binaire, écrit en binaire. Et donc, c'est exactement ce qu'a dit Tardi et ça répond parfaitement à la question.
- KirbyX
- Super Mario 3D World
- Messages : 17124
- Inscription : 05 déc. 2002 13:47
- Localisation : Green Greens
Re: Le coin des codeurs :nerd:
C'est quoi la différence entre un assembleur et un compilateur ? (une réponse en mode pour-les-teubés serait souhaitable
)

- nazlurf
- Super Mario 64
- Messages : 3783
- Inscription : 17 déc. 2002 10:19
- Localisation : Sélestat
Re: Le coin des codeurs :nerd:
un assembleur prend du code et l'assemble.
un compilateur prend du code et le compile
blague à part, cf ce qui était décrit plus tôt. Le compilateur prend du code -plus ou moins- lisible pour un humain -averti- et le compile en code machine (ou code interprété, cela dépend du langage). L'assembleur, la grosse différence, c'est que le langage n'est pas lisible, c'est une série d'instruction bas niveau traduite 1 pour 1 en instructions machine. Là où une instruction compilée peut donner lieu à plusieurs centaines instructions machines (différentes selon les options de compilation), une instruction assembleur donne lieu à une instruction machine (ou une poignée d'instructions machine ? Je laisse les spécialistes de l'assembleur me corriger).
sous réserve que j'ai bien compris ce qui était écrit plus haut par nos camarades, puisque j'ai bien compris que mes restes d'assembleur sont bien trop lointain pour que mon cerveau m'en fasse une restitution fidèle (car j'étais un des moins nuls de ma promo à l'époque, j'me débrouillais quoi
mais ça, c'était avant !)
un compilateur prend du code et le compile

blague à part, cf ce qui était décrit plus tôt. Le compilateur prend du code -plus ou moins- lisible pour un humain -averti- et le compile en code machine (ou code interprété, cela dépend du langage). L'assembleur, la grosse différence, c'est que le langage n'est pas lisible, c'est une série d'instruction bas niveau traduite 1 pour 1 en instructions machine. Là où une instruction compilée peut donner lieu à plusieurs centaines instructions machines (différentes selon les options de compilation), une instruction assembleur donne lieu à une instruction machine (ou une poignée d'instructions machine ? Je laisse les spécialistes de l'assembleur me corriger).
sous réserve que j'ai bien compris ce qui était écrit plus haut par nos camarades, puisque j'ai bien compris que mes restes d'assembleur sont bien trop lointain pour que mon cerveau m'en fasse une restitution fidèle (car j'étais un des moins nuls de ma promo à l'époque, j'me débrouillais quoi

- MectonLaFlemme
- Super Mario Sunshine
- Messages : 5020
- Inscription : 21 juil. 2009 17:32
- Localisation : 2S'Inscrire Mais Baisé Par Le_Systeme
Re: Le coin des codeurs :nerd:
J'ai des flashbacks d'exo qu'on devait faire à la fac d'info O_OCyrare a écrit : 29 mars 2022 12:58 PAR CONTRE, ce premier compilateur a probablement été réfléchi en assembleur, écrit en assembleur, puis converti à la main en binaire, écrit en binaire. Et donc, c'est exactement ce qu'a dit Tardi et ça répond parfaitement à la question.
C'était à base de traduction en assembleur puis binaire d'algo simple, en mode "machine à ruban" / Turring.
J'ai aussi une grosse pensée aux correcteurs qui devaient se fader la relecture de nos copies papiers xD
(mais comme pour du code non-commenté aujourd'hui, je dis que si c'était chiant à écrire, alors ca doit être chiant à relire

^^'
Les fous ont ouvert la voie. Les sages ont suivi
- Golden cube
- Super Mario Galaxy
- Messages : 8155
- Inscription : 05 juil. 2002 21:16
- Localisation : sud ouest 8)
Re: Le coin des codeurs :nerd:
Justement le code généré par un compilateur est envoyé à un assembleur puis un linker au besoin.Cyrare a écrit : 29 mars 2022 12:58 Je suis d'accord avec Tardi.
Je ne trouve aucune définition d'un compilateur qui exclurait la conversion d'un code assembleur en fichier exécutable. Et donc, nécessairement, le premier compilateur a été créé dans un langage directement compréhensible par la machine, donc en binaire.
PAR CONTRE, ce premier compilateur a probablement été réfléchi en assembleur, écrit en assembleur, puis converti à la main en binaire, écrit en binaire. Et donc, c'est exactement ce qu'a dit Tardi et ça répond parfaitement à la question.
C'est un suite d'appel à plusieurs exécutables qui va transformer ton code haut niveau en binaire.
De nos jours c'est tout packagé mais un compilo ne pisse pas du code machine...
Et le premier compilateur est arrivé bien après le premier assembleur.
Edit :
Pour finir la blague j'ai cherché viteuf :
Edit 2 pour nazlurf :The first compiler was written in assembly for the A-0 programming language in 1952.
Le code assembleur et un assembleur c'est bien plus qu'une simple traduction d'opérateurs textuels en langage machine.
Cela simplifie à mort la gestion de l'adressage mémoire.
Par exemple un label ça t'évite de t'amuser à calculer à quelle adresse mémoire est chargé le morceau de code que tu veux exécuter. Tout ce qui est noms symboliques pour des adresses mémoire simplifie à mort le code par rapport à du langage machine.
Après c'est relativement lisible l'assembleur si tu prend la peine de regarder les opcodes.
Perso j'ai beaucoup plus de mal à lire du code haut niveau créé par des génis inconnus du design pattern #yolopasta que du code assembleur d'un mc dont je ne connais pas le jeu d'instruction

Dernière modification par Golden cube le 29 mars 2022 18:22, modifié 1 fois.
- Tardigrade
- Super Mario 64
- Messages : 4529
- Inscription : 25 janv. 2017 15:34
- Contact :
Re: Le coin des codeurs :nerd:
Juste pour clarifier, je dis pas qu'un compilateur c'est pareil qu'un assembleur. Juste que la question de Konino est plus intéressante si on inclut les assembleurs dedans. Sinon, on a envie de poser la même question pour les assembleurs.
Quelques liens pour creuser si ça intéresse quelqu'un :
https://stackoverflow.com/questions/165 ... er-written
https://en.wikipedia.org/wiki/Bootstrap ... mpilers%29
https://en.wikipedia.org/wiki/History_o ... nstruction


Quelques liens pour creuser si ça intéresse quelqu'un :
https://stackoverflow.com/questions/165 ... er-written
https://en.wikipedia.org/wiki/Bootstrap ... mpilers%29
https://en.wikipedia.org/wiki/History_o ... nstruction


- Golden cube
- Super Mario Galaxy
- Messages : 8155
- Inscription : 05 juil. 2002 21:16
- Localisation : sud ouest 8)
Re: Le coin des codeurs :nerd:
Moi je disais juste que quand tu disais qu'un compilateur était codé en langage machine c'était faux 
Tu aurais mentionné l'assembleur dans ton premier post je n'aurais pas tiqué

Tu aurais mentionné l'assembleur dans ton premier post je n'aurais pas tiqué

- Le poussin
- Super Mario Bros. 3
- Messages : 824
- Inscription : 19 janv. 2004 00:37
- Localisation : Sur Paris
Re: Le coin des codeurs :nerd:
- Un compilateur traduit depuis un langage quelconque (en généralement sympa pour un humain) vers un langage que peut comprendre le CPU.KirbyX a écrit : 29 mars 2022 14:20 C'est quoi la différence entre un assembleur et un compilateur ? (une réponse en mode pour-les-teubés serait souhaitable)
- L'assembleur retranscrit dans un format que peut manipuler le CPU (du binaire).
Pour faire une analogie avec les langages naturels. Si tu veux passer une histoire en français à un Italien aveugle.
- D'abord tu traduis le texte français en italien (compilateur).
- Ensuite tu retranscris le texte italien en braille pour que l'Italien puisse le lire.
Comme pour les langages naturels, tu vas perdre de l'information à la compilation (ex. annotations laissées par le développeur), mais l'histoire racontée sera la même. C'est un travail qui peut être compliqué.
De même que le braille est plus limité qu'un texte classique (où tu peux mettre de la mise en forme), le code machine en binaire est plus limité que l'assembleur. Mais si tu connais l'alphabet braille, tu peux passer de l'un à l'autre assez facilement, sans trop réfléchir.
- KirbyX
- Super Mario 3D World
- Messages : 17124
- Inscription : 05 déc. 2002 13:47
- Localisation : Green Greens
Re: Le coin des codeurs :nerd:
Merci !! 
Je pense avoir compris la nuance.

Je pense avoir compris la nuance.
- Mortal
- Satoru Iwata
- Messages : 19360
- Inscription : 15 avr. 2002 10:17
- Localisation : Monde 4, Galaxie 2, Planete 1
Re: Le coin des codeurs :nerd:
Excellente analogie au passage.Le poussin a écrit : 31 mars 2022 23:38- Un compilateur traduit depuis un langage quelconque (en généralement sympa pour un humain) vers un langage que peut comprendre le CPU.KirbyX a écrit : 29 mars 2022 14:20 C'est quoi la différence entre un assembleur et un compilateur ? (une réponse en mode pour-les-teubés serait souhaitable)
- L'assembleur retranscrit dans un format que peut manipuler le CPU (du binaire).
Pour faire une analogie avec les langages naturels. Si tu veux passer une histoire en français à un Italien aveugle.
- D'abord tu traduis le texte français en italien (compilateur).
- Ensuite tu retranscris le texte italien en braille pour que l'Italien puisse le lire.
- meduz'
- Grand analyst
- Messages : 10664
- Inscription : 01 avr. 2005 13:46
- Localisation : Devant la Switch
- Contact :