Tutoriel 1 - L'assembleur, généralités (juste une approche)

Pour discuter de l'assembleur
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Tutoriel 1 - L'assembleur, généralités (juste une approche)

Message par Anonyme2 »

Tutorial 1 - L'assembleur, généralités
-------------------------------------------
- Terminé le 17 octobre 2004 -
-----------------------------------


L'assembleur est un Langage de programmation qui est constitué d'instructions qui sont nommées par un mnémonique, c'est-à-dire un nom court que l'on peut se rappeller facilement.
Ce mnémonique est composé de quelques lettres qui évoquent le type d'action que va faire l'instruction.

Par exemple l'instruction ADD pour évoquer une addition, SUB pou évoquer une soustraction (mnémoniques hérités de l'anglais)

Dans un microprocesseur, les instructions sont codées et sont représentées sous une forme numérique.
Au tout début, il fallait programmer avec une suite d'instructions numériques, ce langage étant appelé langage machine.

Un programme ressemblait à ça (valeurs numériques n'ayant rien à voir avec les valeurs réelles)

10
AC
48
54
43
11

etc.

Cela devient vite fastidieux car cette suite numérique est peu parlante.
De plus, cette programmation s'effectue directement avec les adresses, lorsque l'on fait un saut, on donne directement la valeur du déplacement (qui ne se code pas tout à fait de la même manière si le saut se fait 'en avant' ou 'en arrière'.
Cela devient vite compliqué, il y a des instructions dont les sauts sont courts donc dans une plage bien précise courte, d'autres sauts longs une plage différente.
Si l'on commet une erreur de calcul sur le saut, ça plante et comme ce langage est peu parlant, ça devient vite galère de trouver l'erreur.

Pour palier à cette représentation du langage machine, le langage "assembleur" a mis en place.
Ces mnémoniques sont directement liés aux instructions du langage machine.
L'assembleur représente soit le langage soit le programme qui va permettre de transformer une suite d'instructions asm en programme parfaitement fonctionnel.

Chaque microprocesseur a son langage et son jeu d'instructions qui lui est propre, et les microprocesseurs d'une même famille ont une partie des instructions qui sont communes.
Nous ne nous occuperons que des microprocesseurs de la famille X86, les compatibles IBM.
Le langage assembleur est indépendant du système d'exploitation, il se réfère simplement au microprocesseur auquel il s'applique.

Chaque microprocesseur qui sort voit son jeu d'instructions modifié ou/et augmenté d'un certain nombre d'instructions.
La programmation en assembleur permet d'entrevoir (pour ceux qui poussent leurs connaissances) les interactions entre les différents OS, le matériel et les applications.

L'assembleur permet de faire des choses qui sont interdites dans certains langages.
Par exemple, certains langages définissent des pointeurs sur un type donné (long, word, byte etc) et ne permettent pas d'accéder à une variable différente avec ce pointeur.

En assembleur, on manipule des valeurs, à nous de savoir de quel type il s'agit: entiers signés ou non, chaîne, flottant, pointeurs, adresses etc.

Et un des avantages de l'assembleur est incontestablement sa rapidité par rapport à des langages de haut niveau, car on peut rationaliser les instructions en asm souvent mieux qu'un compilateur, bien que certains soient très efficaces.

Pour reprendre, l'assembleur est un langage de programmation, alors ne dites pas tout de suite 'je vais écrire un OS en assembleur!'
Pour programmer en asm comme dans n'importe quel langage, il faut savoir ce que l'on doit faire, la programmation restant la transcription de la résolution du problème.
Il faut parfois passer beaucoup de temps de réflexion sur le problème pour après seulement l'écrire en asm.

Et puis écrire des programmes complets en assembleur reste une tache lourde qui nécessite à mon avis de souvent programmer en assembleur pour avoir certains réflexes et maintenir une connaissance suffisante du jeu d'instruction.




Voilà pour le premier tut qui est plus une approche qu'un vrai tutoriel.


Prochain tut : Rappel des bases 2, 10, et 16


A+
Denis