L'assembleur, c'est quoi ?

Durée: 9m0s

Date de sortie: 06/10/2025

Vous pensez que l'assembleur est un langage de programmation ? FAUX !

C'est en réalité une multitude de langages, pour tourner sur une multitude d'architectures de processeurs !

Salut et bienvenue dans ce nouvel épisode du podcast de Code Garage,
je m'appelle Nicolas Bondin-Vernard et aujourd'hui on va parler de l'Assemblure.
Alors souvent on parle de l'Assemblure comme si c'était un seul langage de programmation,
mais en réalité c'est un peu une déformation du langage puisque il ne s'agit pas d'un langage
unique, mais chaque architecture de processeur a son propre langage assemblure puisque chaque
processeur va comprendre un jeu d'instruction différent. Donc comme vous l'aurez compris,
bon je vais continuer à parler de langage assemblure en général, mais l'Assemblure c'est le langage
qui va faire le lien entre des langages de programmation plus haut niveau et la machine
physique, le processeur. En fait l'Assemblure ça va être un ensemble d'instructions qui correspond
directement aux instructions qui sont comprises par le processeur, c'est donc on va dire du langage
machine qui va ensuite être comprise par l'électronique numérique, par des 1 et des 0.
Alors si on prend vraiment des instructions très simples en assemblure, ça donne quoi ? Eh bien par
exemple l'Assemblure x86 qui est un peu celui qu'on apprend quand on apprend l'Assemblure en
général à l'école, eh bien il va avoir des instructions comme move, après il va y avoir AX,
ça va être le registre et ensuite une valeur ça va être 5. Donc ça ça veut dire par exemple
bien on va charger la valeur 5 dans le registre AX. Un registre c'est tout simplement un endroit de
la mémoire. Puis on va avoir des instructions comme add AX, 3 et bien là on va ajouter la valeur 3 à la
valeur qui est déjà contenue dans le registre AX. Donc voyez l'Assemblure c'est vraiment un
langage, le langage le plus bas niveau possible et surtout il est spécifique à chaque architecture
de processeurs. Alors pourquoi est-ce qu'on écrit parfois en assemblure ? Eh bien d'abord parce que
ça donne un contrôle total, on accède directement au registre, à la mémoire, aux périphériques etc.
C'est là où on va pouvoir avoir la performance maximale puisque il n'y a pas d'instruction
superflue, en tout cas il ne doit pas y en avoir et elle est optimisée vraiment pour le matériel.
Et surtout c'est encore ce qu'on est obligé de faire aujourd'hui parfois quand on va travailler
sur des microcontrollers, des systèmes embarqués ou de l'optimisation qui est vraiment critique
et parfois même de la rétro-ingénierie pour comprendre eh bien comment un logiciel fonctionne.
Alors pourquoi est-ce que je vous parle d'X86 ? On va même parler parfois de X86-64 et bien tout
simplement parce que c'est l'architecture de processeurs qui est dominante dans les PC aujourd'hui.
Evidemment il y a plein d'autres architectures majeures, on retrouve par exemple ARM ou ARM en
32 bits et en 64 bits pour plutôt les smartphones, les tablettes, les objets connectés etc.
On va avoir alors Apple qui a sorti le M mais le M il faut savoir que c'est simplement une surcouche,
c'est pas vraiment une surcouche mais voilà quelque chose au-dessus de l'ARM,
c'est un ARM optimisé entre très gros guillemets et puis on retrouve parfois de moins en moins
évidemment mais dans les années 2000 on avait de l'architecture MIPS qui était dans les consoles
par exemple de choses comme ça et aujourd'hui on a même une nouvelle architecture qui est ouverte
et qui est en plein essor qui s'appelle RISC 5. Alors pourquoi une je parle d'architecture ouverte
et bien tout simplement parce que les autres architectures dont j'ai parlé notamment l'ARM
et l'X86 et bien enfin M aussi du coup et bien elles sont propriétaires. ARM ça appartient
à un architectur et donc à un architectur qui n'est pas un architectur et qui n'est pas un architectur


et qui n'est pas un architectur et qui n'est pas un architectur et qui n'est pas un architectur
et qui n'est pas un architectur et qui n'est pas un architectur et qui n'est pas un architectur
et qui n'est pas un architectur et qui n'est pas un architectur et qui n'est pas un architectur
un peu historique et donc voilà pourquoi est-ce que je dis que RISC 5 donc c'est une architecture
ouverte car les autres ne sont pas ouvertes. Alors il y a quand même des différentes manières
d'exploiter ces licences par exemple ARM ils vendent leur licence à qui veut bien l'acheter donc on
a du Apple qui l'achète pour son architecture M mais on a Snapdragon qui fabrique etc etc et par
contre les x86 et bien sont seulement Intel et AMD qui utilisent cette licence pour fabriquer
leur propre processeur et donc comme je le rappelle voilà pourquoi je vous ai parlé un petit peu
de toutes ces architectures là puisque il n'existe pas un seul langage assembleur il existe un langage
assembleur par architecture de processeur mais c'est vrai qu'aujourd'hui quand on apprend l'assembleur
parce que c'est hyper intéressant à apprendre et même si je vais pas vous faire un cours aujourd'hui
c'est simplement une petite introduction on voit principalement l'architecture x86 alors
c'est quoi les instructions exactement en assembleur x86 je vais vous en présenter quelques unes très
rapidement on a parlé tout à l'heure de move et puis on a parlé de ad aussi mais il y en a
d'autres on va avoir par exemple sub pour faire une subtraction on va avoir mule pour multiplier
div pour diviser tout ça ça paraît logique mais on va évidemment avoir des end des or
des xors comme on aurait dans un langage de programmation plus plus haut niveau on a cmp qui
va prendre deux valeurs et qui va comparer ces valeurs mais on a aussi jump par exemple qui va
faire un saut un saut vers un label qu'on appelle un saut inconditionnel puisqu'il ne vérifie
aucune condition mais on va avoir je qui est un jump uniquement si donc c'est jump equals qui est
un jump qui va se passer uniquement si une valeur est égale à une autre valeur on va avoir un jne
qui va avoir un jump not equal donc si un jump seulement si c'est différent et donc derrière
ces jump on va mettre un label vers lequel et bien on va sauter mais on a aussi des appels de
fonction avec call et une instruction ret pour retourner une valeur voilà alors évidemment il
y a parfois d'autres choses et puis du coup comme je vous ai dit cette syntaxe elle va changer en
fonction des architectures mais voilà vous avez juste une petite vision et avec tout ça et bien
on va construire des comportements pour nos machines alors très souvent évidemment on écripe
pas l'assembleur à la main on va passer par un compilateur donc typiquement un compilateur en c
et bien il va transformer le c qui est plus facile à écrire et bien vers la version d'assembler
qui correspond au processeur de la machine sur laquelle il est exécuté alors ça évidemment
c'est ce qui se passe pour des langages bas niveau mais parfois on a des langages un petit peu plus
au niveau comme le javascript par exemple donc là le javascript il va passer par différentes
étapes d'abord il va être interprété par un moteur d'interprétation donc par exemple on va
avoir v8 on va avoir spy d'or monkey etc et ces moteurs là souvent sont codés en c++ et donc en
passant par ce moteur codé en c++ et bien les instructions javascript vont être traduites en
instructions assemblure x86 à rm selon sur quel device il tourne et ensuite et bien ces instructions
sont passées directement au processeur qui va les exécuter qui va devoir interagir avec la mémoire
les périphériques etc voilà c'en est tout aujourd'hui pour cette petite explication cette
introduction à l'assembleur peut-être que certains et certaines d'entre vous connaissaient déjà
mais je pense que c'était une bonne chose de faire voilà un petit retour en arrière au base
vraiment de l'informatique et on arrive pile à la frontière entre des épisodes un petit peu
plus classique et les épisodes de notre série circuit où on parle plutôt du côté vraiment
électronique et processeur etc et donc et bien cette épisode arrive pile entre les deux moi je vous
donne rendez-vous la semaine prochaine pour un prochain épisode et surtout pensez à laisser
cinq étoiles à ce podcast sur spotify apple 10 heures pour qu'on puisse remonter dans les
classements et surtout pensez à venir faire un tour sur code tirergarage.com pour retrouver
tous les articles tous les anciens podcasts et évidemment tous les cours les formations
complètes avec des quiz des projets etc pour apprendre une techno de zéro voilà il ya des
cours adaptés à tous les niveaux mais surtout si vous êtes junior on fait bien d'attention à ce
que ce soit compréhensible et adapté pour tout le monde donc voilà venez essayer et je vous donne
rendez-vous la semaine prochaine pour un prochain épisode salut !

Episode suivant:


Les infos glanées

Je suis une fonctionnalité encore en dévelopement

Signaler une erreur

Code-Garage

Découvrons ensemble des sujets passionnants autour du métier de dev et de la programmation en général !
Tags
Card title

Lien du podcast

[{'term': 'Technology', 'label': None, 'scheme': 'http://www.itunes.com/'}]

Go somewhere