Site logo

Triceraprog
La programmation depuis le Crétacé

Apprendre l'assembleur... mais comment ? ()

Il y a peu, j'ai eu une discussion à propos de l'apprentissage de l'assembleur. La discussion était partie de l'envie d'une personne de créer un jeu sur MSX, mais directement au niveau de la machine, plutôt que de passer par un langage de haut niveau, comme le BASIC natif. Et pourquoi pas. Une donnée importante : la personne en question connaît déjà la programmation, c'est donc un abord de nouveau langage dont on parle, et non des concepts généraux du développement d'un programme.

Lorsque l'on aborde un langage de plus haut niveau, que ce soit BASIC ou Pascal, on va se concentrer sur la manière d'exprimer des concepts dans ce langage en particulier. Lorsque l'on connaît déjà un autre langage de même famille (large), il s'agit même souvent de comprendre quelle sont les particularité du langage appris.

Lorsque l'on aborde une machine en particulier dans un langage de haut niveau, il s'agit en suite de connaître les bons appels, les bonnes fonctions, particulières à cette machine.

Mais comment démarrer en assembleur ? Avec l'assembleur, toute la couche d'abstraction est retirée, il n'y a plus de concept de variables, de fonctions, de structures de données, on se retrouve face à face à la machine. Cela implique en premier lieu qu'apprendre l'assembleur, c'est apprendre le fonctionnement particulier de cette machine, et même pas seulement du fonctionnement du processeur.

Quand on regarde les ressources qui enseignent l'assembleur, que ce soit pour une machine ou seulement un processeur, on se retrouve avec une structure assez similaire où il est d'abord expliqué l'arithmétique et la logique binaire, la représentation des entiers, puis sont abordés les registres et globalement l'architecture du processeur. Ce sont des dizaines de pages à comprendre, suivre... et la plupart du temps sans exercice pratique, sans mise en application. Cela semble sous-entendre que pour démarrer la moindre opération, il faut lire une centaine de pages.

Lorsque l'on a déjà des connaissances sur d'autres machines et processeurs similaire, cela peut aller vite. Mais lorsque c'est le premier abord du mode du bas niveau, c'est beaucoup à ingurgiter et probablement très démotivant.

Je me suis posé la question de comment pourrait être abordé la question, j'ai pris quelques notes et je vais m'essayer à l'exercice dans des articles qui suivront. Mon objectif est de pouvoir construire de la connaissance sur la programmation en assembleur pour des personnages qui n'en n'auraient jamais fait.

Voyons ce que cela donne...