Le coin des codeurs :nerd:

Discussions sans rapport avec Nintendo mais qui n'ont pas un degré de connerie excessif : Voiture, Politique, Manga, TV, un message sympa...

Modérateur : DojoSuperHeroes

Avatar de l’utilisateur
Tardigrade
Super Mario 64
Messages : 4529
Inscription : 25 janv. 2017 15:34
Contact :

Re: Le coin des codeurs :nerd:

Message par Tardigrade »

Konino a écrit : 28 mars 2022 15:28 Le premier à avoir codé un compilateur, comment il l'a compilé?
Il l'a pas compilé, mais écrit directement en code machine.
Avatar de l’utilisateur
Golden cube
Super Mario Galaxy
Messages : 8155
Inscription : 05 juil. 2002 21:16
Localisation : sud ouest 8)

Re: Le coin des codeurs :nerd:

Message par Golden cube »

En assembleur plutôt je dirais. C'est déjà un peu plus sympas :)
Avatar de l’utilisateur
Tardigrade
Super Mario 64
Messages : 4529
Inscription : 25 janv. 2017 15:34
Contact :

Re: Le coin des codeurs :nerd:

Message par Tardigrade »

Et qu'est-ce qui assemble ton code assembleur ? :)
Avatar de l’utilisateur
nazlurf
Super Mario 64
Messages : 3783
Inscription : 17 déc. 2002 10:19
Localisation : Sélestat

Re: Le coin des codeurs :nerd:

Message par nazlurf »

toi, t'as jamais fait d'assembleur ... :mrgreen:

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é)
Avatar de l’utilisateur
Tardigrade
Super Mario 64
Messages : 4529
Inscription : 25 janv. 2017 15:34
Contact :

Re: Le coin des codeurs :nerd:

Message par Tardigrade »

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).
Avatar de l’utilisateur
Golden cube
Super Mario Galaxy
Messages : 8155
Inscription : 05 juil. 2002 21:16
Localisation : sud ouest 8)

Re: Le coin des codeurs :nerd:

Message par Golden cube »

Tu parles de compilateur à l'origine. L'assembleur ne se compile pas :nerd:
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 :oscar:
Sinon autant remonter la chaine jusqu'à l'alternateur pour être safe :mrgreen:
Voire la création des éléments composant l'alternateur :nerdhum:
Avatar de l’utilisateur
KirbyX
Super Mario 3D World
Messages : 17124
Inscription : 05 déc. 2002 13:47
Localisation : Green Greens

Re: Le coin des codeurs :nerd:

Message par KirbyX »

J'étais arrivé à comprendre le message de Tardigrade avec ses explications pour les teubés et t'as tout fait foirer golden... :cry:
Avatar de l’utilisateur
Golden cube
Super Mario Galaxy
Messages : 8155
Inscription : 05 juil. 2002 21:16
Localisation : sud ouest 8)

Re: Le coin des codeurs :nerd:

Message par Golden cube »

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 :baballe:
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
Avatar de l’utilisateur
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:

Message par Konino »

Du coup je sais même pas si j'ai eu ma réponse. :oscar:
Avatar de l’utilisateur
nazlurf
Super Mario 64
Messages : 3783
Inscription : 17 déc. 2002 10:19
Localisation : Sélestat

Re: Le coin des codeurs :nerd:

Message par nazlurf »

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).
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) ?
Avatar de l’utilisateur
Tardigrade
Super Mario 64
Messages : 4529
Inscription : 25 janv. 2017 15:34
Contact :

Re: Le coin des codeurs :nerd:

Message par Tardigrade »

Konino a écrit : 29 mars 2022 07:19 Du coup je sais même pas si j'ai eu ma réponse. :oscar:
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. :)
Avatar de l’utilisateur
Golden cube
Super Mario Galaxy
Messages : 8155
Inscription : 05 juil. 2002 21:16
Localisation : sud ouest 8)

Re: Le coin des codeurs :nerd:

Message par Golden cube »

Konino a écrit : 29 mars 2022 07:19 Du coup je sais même pas si j'ai eu ma réponse. :oscar:
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.
Avatar de l’utilisateur
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:

Message par Konino »

Ok merci. :)
Avatar de l’utilisateur
Golden cube
Super Mario Galaxy
Messages : 8155
Inscription : 05 juil. 2002 21:16
Localisation : sud ouest 8)

Re: Le coin des codeurs :nerd:

Message par Golden cube »

Tardigrade a écrit : 29 mars 2022 09:08
Konino a écrit : 29 mars 2022 07:19 Du coup je sais même pas si j'ai eu ma réponse. :oscar:
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. :)
Vu que les jeux d'instructions sont assez standard (x86, ARM, ...) les assembleurs existent déjà en général.
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.
Avatar de l’utilisateur
Cyrare
Satoru Iwata
Messages : 26823
Inscription : 15 avr. 2002 13:04
Localisation : Paris, France

Re: Le coin des codeurs :nerd:

Message par Cyrare »

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.
Avatar de l’utilisateur
KirbyX
Super Mario 3D World
Messages : 17124
Inscription : 05 déc. 2002 13:47
Localisation : Green Greens

Re: Le coin des codeurs :nerd:

Message par KirbyX »

C'est quoi la différence entre un assembleur et un compilateur ? (une réponse en mode pour-les-teubés serait souhaitable :silly: )
Avatar de l’utilisateur
nazlurf
Super Mario 64
Messages : 3783
Inscription : 17 déc. 2002 10:19
Localisation : Sélestat

Re: Le coin des codeurs :nerd:

Message par nazlurf »

un assembleur prend du code et l'assemble.
un compilateur prend du code et le compile :mrgreen:

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 :mrgreen: mais ça, c'était avant !)
Avatar de l’utilisateur
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:

Message par MectonLaFlemme »

Cyrare 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.
J'ai des flashbacks d'exo qu'on devait faire à la fac d'info O_O
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 :evil: )

^^'
Les fous ont ouvert la voie. Les sages ont suivi
Avatar de l’utilisateur
Golden cube
Super Mario Galaxy
Messages : 8155
Inscription : 05 juil. 2002 21:16
Localisation : sud ouest 8)

Re: Le coin des codeurs :nerd:

Message par Golden cube »

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.
Justement le code généré par un compilateur est envoyé à un assembleur puis un linker au besoin.
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 :
The first compiler was written in assembly for the A-0 programming language in 1952.
Edit 2 pour nazlurf :
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 :oscar:
Dernière modification par Golden cube le 29 mars 2022 18:22, modifié 1 fois.
Avatar de l’utilisateur
Tardigrade
Super Mario 64
Messages : 4529
Inscription : 25 janv. 2017 15:34
Contact :

Re: Le coin des codeurs :nerd:

Message par Tardigrade »

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

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

:mrgreen:
Image
Avatar de l’utilisateur
Golden cube
Super Mario Galaxy
Messages : 8155
Inscription : 05 juil. 2002 21:16
Localisation : sud ouest 8)

Re: Le coin des codeurs :nerd:

Message par Golden cube »

Moi je disais juste que quand tu disais qu'un compilateur était codé en langage machine c'était faux :mrgreen:
Tu aurais mentionné l'assembleur dans ton premier post je n'aurais pas tiqué :oscar:
Avatar de l’utilisateur
Le poussin
Super Mario Bros. 3
Messages : 824
Inscription : 19 janv. 2004 00:37
Localisation : Sur Paris

Re: Le coin des codeurs :nerd:

Message par Le poussin »

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 :silly: )
- Un compilateur traduit depuis un langage quelconque (en généralement sympa pour un humain) vers un langage que peut comprendre le CPU.
- 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.
Mon site : Image
Avatar de l’utilisateur
KirbyX
Super Mario 3D World
Messages : 17124
Inscription : 05 déc. 2002 13:47
Localisation : Green Greens

Re: Le coin des codeurs :nerd:

Message par KirbyX »

Merci !! :D
Je pense avoir compris la nuance.
Avatar de l’utilisateur
Mortal
Satoru Iwata
Messages : 19360
Inscription : 15 avr. 2002 10:17
Localisation : Monde 4, Galaxie 2, Planete 1

Re: Le coin des codeurs :nerd:

Message par Mortal »

Le poussin a écrit : 31 mars 2022 23:38
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 :silly: )
- Un compilateur traduit depuis un langage quelconque (en généralement sympa pour un humain) vers un langage que peut comprendre le CPU.
- 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.
Excellente analogie au passage.
Avatar de l’utilisateur
meduz'
Grand analyst
Messages : 10664
Inscription : 01 avr. 2005 13:46
Localisation : Devant la Switch
Contact :

Re: Le coin des codeurs :nerd:

Message par meduz' »

Répondre