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

cr  23.08.2020      r+  23.08.2020      r-  08.05.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 en utilisant des 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'assemblages 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.

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 machine à une compilation pour économiser quelques heures de temps de programmeur était une opération rentable, même si les compilateurs de l'époque fournissaient un code moins performant (plus volumineux et souvent plus lent). 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, 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.