Le langage machine – l’assembleur
Le langage Assembleur est celui qui permet de bidouiller le plus. Etant le plus proche du matériel, vous avez toute liberté (selon les OS, dans la limite de vos droits d’accès au matériel) pour programmer.
Il présente un réel intérêt pour celui qui désire optimiser une portion de son code particulièrement lente, et souvent appelée. Il est cependant rare d’avoir à développer tout le programme en assembleur, car ce serait particulièrement long et fastidieux. Mais l’intégration d’une routine optimisée en assembleur dans le reste de votre programme écrit dans un langage haut niveau sera particulièrement utile pour redonner du souffle à votre programme. Notons cependant que si le gain de vitesse est flagrant comparé à du BASIC ou à du Pascal, il devient moins évident avec du C compilé avec un excellent compilateur avec des options d’optimisation en vitesse.
Une deuxième raison de vouloir faire de l’assembleur est par exemple de vouloir écrire quelques applications sur des calculatrices comme les TI. (voir TI 89 et TI 92). Dans ces cas, l’assembleur libère littéralement les performances de la calculatrice.
Mais attention, si l’assembleur a des performances magnifiques et des possibilités incroyables, il a deux inconvénients majeurs…
- Une portabilité très restreinte
voire réduite à zéro… Le code assembleur sur lequel vous avez passé plusieurs dizaines d’heures, d’une performance incroyable, ne peut fonctionner que sur votre processeur, et le plus souvent même, uniquement sous le système d’exploitation pour lequel vous l’avez développé. - Un langage difficile à développer
Il faut maîtriser à fond l’assembleur pour pouvoir espérer faire un programme en ne passant pas un temps fou. Deux problèmes existent : d’une part, comme l’assembleur contient très peu d’instruction, un programme assembleur contiendra beaucoup beaucoup plus d’instructions que dans un langage de plus haut niveau. Un simple printf pourra vous prendre plusieurs dizaines de lignes si il est compliqué… d’autre part, il vous faudra être d’une extrême rigueur pour qu’il marche : la moindre erreur est fatale, et conduit rapidement au plantage de la machine.
Mais ne vous laissez pas complètement décourager de faire de l’assembleur par ces mises en garde…
Quelques ultimes conseils pour la programmation assembleur. Munissez vous d’une part d’un aide mémoire des instructions assembleurs, si possible avec le nombre de cycles suivant les instructions et les types de processeurs. On en trouve de très bien faits à un prix raisonnable chez Marabout. Si vous développez sous DOS, faîtes aussi l’acquisition d’un Aide Mémoire des Interruptions. Ceci est indispensable si vous voulez faire autre chose que du calcul dans vos programmes. La maintenant très célèbre “Bible du PC” vous sera aussi très certainement d’une très grande utilité si vous faites un tout petit peu de programmation système. Ne négligez pas le très ancien debug du DOS, qui assemble, désassemble, et permet de débugguer tout à fait convenablement tous programmes.
Voici mes quelques modestes programmes assembleurs. Comme vous pourrez le constater, la plupart sont obsolètes, ce qui illustre mes propos précédents… Ce sont ici des programmes très courts uniquement programmés en assembleur. J’ai en général plus utilisé l’assembleur de manière intégrée à des programmes
- init : Surveiller l’utilisation de son PC
- savemem : Faire une image disque de la mémoire.
- syspause : Faire une pause dans le config.sys.
(Des versions binaires sont disponibles sur la page des téléchargements)