Assiste.com - Sécurité informatique - Vie privée sur le Web - Neutralité d'Internet

cr  23.08.2020      r+  23.08.2020      r-  16.07.2024      Pierre Pinard.         (Alertes et avis de sécurité au jour le jour)

L'assembleur (langage assembleur, langage d'assemblage, langage machine, langage natif) est, en programmation informatique, le langage le plus proche de chaque composant électronique d’un appareil dont, pour les PC, les processeurs de calcul et les processeurs graphiques. Il y a autant d'assembleurs qu'il existe de processeurs (marques et modèles). Ces langages sont alors dits de « bas niveau ». Chaque instruction possible de chaque composant est représentée par un code mnémotechnique. Les assembleurs sont le langage natif de tous les composants, les langages les plus optimisés possibles (rapidité d'exécution), mais aussi les plus délicats à utiliser donnant les applications les plus délicates à mettre au point et maintenir.




Les programmes de l'EDSAC (1949), premier calculateur à programmes enregistrés, étaient rédigés à la plume d'oie, sur des feuilles de papier, en utilisant des codes mnémoniques alphabétiques d'une lettre pour chaque instruction. La traduction était alors faite à la main par les programmeurs, une opération longue, fastidieuse et entachée d'erreurs.

Le premier programme assembleur a été écrit par Nathaniel Rochester pour l'IBM 701 (le premier ordinateur commercialisé par IBM) en 1954.

Les langages d'assemblage ont éliminé une grande partie des erreurs commises par les programmeurs de la première génération d'ordinateurs, en les dispensant de mémoriser les codes numériques des instructions et de faire des calculs d'adresses. La programmation en assembleur était alors utilisée pour écrire toutes sortes de programmes.

Il n'y a pas UN langage d'assemblage, mais autant de langages que de marques d'ordinateurs, voire de modèles d'ordinateurs dans la même marque. Ces langages sont la représentation humaine des instructions rendues possibles d'exécuter dans les composants électroniques (dont le processeur central [enfin... l'unité centrale, initialement, constituée de milliers de composants électroniques, voire électromécanique]), avant que l'ultra-miniaturisation permette de faire des composants, appelés processeurs, comportant tout dans quelques millimètres carrés.

Dans les années 1970-1980, l'utilisation de l'assembleur pour écrire des applications a été très largement supplantée par l'emploi de langages de programmation de « haut niveau » : Fortran, Cobol, PL/I, etc. La puissance des machines le permettait et consacrer quelques minutes de temps-calcul machine à une compilation pour économiser quelques heures de temps-calcul de programmeurs était une opération rentable, même si les compilateurs de l'époque fournissaient un code moins performant (plus volumineux et souvent plus lent). Grace Hopper, contre-amirale de la marine, mène l'établissement de normes pour les ordinateurs et écrit les premiers langages de programmation (Fortran, COBOL) et est la conceptrice du premier compilateur, en 1951.

Par ailleurs, ces langages de haut niveau permettaient de s'affranchir de la dépendance à une architecture matérielle unique. De plus, le code est nettement plus facile à lire, même pour son propre auteur, et réduit le risque d'un bug.

Les systèmes d'exploitation ont été écrits en langage d'assemblage jusqu'à l'introduction de MCP de Burroughs, en 1961, qui était écrit en ESPOL, dialecte d'Algol.

L'assembleur est revenu quelque peu en faveur sur les premiers micro-ordinateurs, où les caractéristiques techniques (taille mémoire réduite, puissance de calcul faible, architecture spécifique de la mémoire, etc.) imposaient de fortes contraintes, auxquelles s'ajoute un facteur psychologique important, l'attitude « hobbyiste » des premiers utilisateurs de micro-ordinateurs, qui ne se satisfaisaient pas de la lenteur des programmes écrits avec le BASIC interprété, généralement fourni avec l'ordinateur. De plus, un programme peut être écrit en BASIC ou un autre langage (plus lisible) avec des appels à du code écrit en assembleur pour les parties du programme qui prennent le plus de temps.

De gros programmes ont été écrits entièrement en assembleur pour les micro-ordinateurs, comme le système d'exploitation DOS de l'IBM PC (environ 4000 lignes de code) et le tableur Lotus 1-2-3 (son rival Multiplan, qui existait déjà sous CP/M, était écrit en C). Dans les années 1990, c'était aussi le cas pour la plupart des jeux pour consoles vidéo (par exemple pour la Mega Drive ou la Super Nintendo).




Le tout premier exercice que mon prof d'informatique m'a donné à faire, sur l'IBM 360 de l'école, en 1967, fut une inversion de matrice ! Jamais oublié ! C'était de nuit, car personne (dont aucun élève) n'avait le droit de toucher à cette machine sauf lui et moi. C'était dans les années 1967 et, le jour, ce mastodonte servait à des entreprises. J'avais une véritable jouissance avec ce langage et jouer avec les instructions.