l'assembleur  [livre #4061]

par  pierre maurette




Introduction

Cet ouvrage s’intéresse à la programmation en assembleur sur micro-ordinateurs compatibles PC munis d’un système d’exploitation Windows. Nous aborderons donc par la pratique plusieurs assembleurs parmi les plus courants, plus exactement plusieurs façons de mettre en oeuvre l'assembleur. Nous serons fatalement amenés à aborder la structure de la machine, ainsi que certaines bases incontournables de la programmation bas niveau.

Nous sommes partis de la constatation suivante : beaucoup de programmeurs amateurs et professionnels souhaitent s’essayer à l’assembleur, pour faire face à un problème particulier, améliorer les performances de leurs programmes, ou simplement pour le plaisir.

Cette ambition bute alors contre de nombreuses difficultés. Or l’assembleur vu comme une liste d’instructions, ce n’est pas compliqué. C’est même le langage le plus simple qui soit, puisque a priori totalement prévisible. Nous nous sommes penchés sur ces difficultés, en ayant expérimenté nous-mêmes une partie. Nous en avons trouvé de deux ordres :

  Windows fait tout, à juste titre, pour masquer à l’utilisateur les entrailles de la machine. Or, cette connaissance, au moins partielle, est très utile, voire nécessaire. Nous avons donc consacré à ce sujet deux chapitres introductifs, et y avons ajouté une approche la plus intuitive possible de notions théoriques, mathématiques, indispensables.

  Pour saisir une seule ligne de code, il faut être en situation de le faire. Depuis l’époque où les machines démarraient sur l’invite d’un interpréteur Basic, les choses ont considérablement évolué, et dans un sens qui n'est pas celui de l'expérimentation. Pour la moindre ligne dans n’importe quel langage, il faut installer un outil de développement, souvent une usine à gaz, pour nous retrouver dans un environnement confortable. Admettons malgré tout que ces outils, uns fois installés, sont très efficaces. La situation est pire en assembleur, où il n’existe pas de véritable environnement de développement intégré. Nous avons résolu ce problème de deux façons, toutes deux décrites de A à Z. L’une passe par l’installation et l’exploitation de MASM, l’autre, très confortable, utilise l’excellent assembleur BASM intégré à Delphi, de Borland.

Cette dernière option, efficace et pragmatique, est décrite jusque dans les moindres détails d'installation. En effet, une autre caractéristique de l’ouvrage est de ne pas éluder le problème de l’approvisionnement du logiciel et surtout de sa mise en oeuvre.

Nous adressant en partie à des lecteurs désireux d’essayer, nous n’avons préconisé que des solutions peu onéreuses, souvent gratuites, qui n’imposent pas l’installation d’un logiciel coûtant plusieurs milliers d’euros.

Quand la place nous a imposé un choix, en particulier dans le cas de MASM et équivalents, nous avons choisi de vous laisser dotés d'un environnement opérant et des moyens de vous procurer de la documentation, plutôt que de décrire par le menu cette documentation.

Cette seconde édition part du même niveau que la première, c'est à dire l'initiation. Mais il va plus loin à la fois dans la théorie et dans la pratique. En particulier, les exemples tournant sur un assembleur autonome sont plus nombreux, et  cette façon de travailler a beaucoup plus été prise en compte.

Pour qui ?

Indubitablement, ce livre s’adresse tout d’abord au débutant complet comme au programmeur expérimenté voulant s’initier à l'assembleur. Il suffira, pour en profiter pleinement, de disposer d’un PC sous Windows muni d’un lecteur de CD-Rom et d'un accès occasionnel à Internet, un atout non négligeable.

L'ouvrage s'adresse également au lecteur contemporain des débuts de la micro-informatique, qui s'est en son temps, par plaisir ou nécessité, adonné au langage machine, et qui aujourd'hui aimerait bien s’y remettre. Il s'aperçoit que le processeur s'est empâté, sans rien perdre de sa vivacité, bien au contraire. Et qu'il est malheureusement devenu difficile d'accès, voire distant. À lui, comme à d'autres, nous présenterons, en toute fin d’ouvrage, un traitement alternatif, une sorte de médecine douce à base de microcontrôleurs PIC.

Vous programmez peut-être en C/C++, Pascal Objet, C#, ou pourquoi pas Java. Vous avez parfois des petits soucis, que vous résolvez en modifiant une variable signée en non signée, par exemple. Parcourez ce livre en testant les exemples, simplement à l’aide de Delphi ou de votre langage habituel s’il prend en charge l’assembleur. Puis oubliez l’assembleur et revenez à vos programmes. Nous vous garantissons un gain de productivité à la mesure du flou dans lequel vous étiez auparavant.

Démarrant au niveau 0, nous avons voulu aller plus loin qu’une simple addition ou l’affichage d’une chaîne de caractères. C’est pour cette raison que, une fois que le lecteur a en main tous les éléments pour progresser de lui-même, les choses s’accélèrent et les étapes sont brûlées. Le livre est en quelque sorte le début d’une série, dont vous écririez le tome 2 et les suivants aidés par quelques excursions dans ce premier tome. Pour aborder dans un avenir très proche l’architecture x86-64, ou AMD64, par exemple.

C’est dans cette optique que certains paragraphes, vous le constaterez, sont écrits sans recul. Quand un point suscite des interrogations, nous exposons immédiatement les moyens mis en œuvre pour y répondre ; en effet, quand certaines constatations inattendues sont faites pendant la rédaction, nous traitons ces questions à la volée, en direct. Nous sommes convaincus que ces moyens sont parfois plus importants que la question elle-même, et qu’il serait dommage de les cacher par une réécriture "au propre" pour affirmer une quelconque expertise.

Nous avons voulu qu'un lecteur débutant mais motivé puisse ex-nihilo aller jusqu'à aborder des notions déjà complexes. Dans ces conditions, il est inévitable que certaines parties paraissent trop simples à d'autres lecteurs. Attention toutefois, l'internet existe, et donc l'accès facile à une bonne information, dans le domaine de l'informatique s'entend. Nous avons donc appuyé sur l'explication et l'expérimentation. Et un programmeur déjà aguerri peut tirer avantage d'une approche de certaines notions non pas inévitablement meilleure, mais différente. Pensons aux variables et pointeurs, ou aux entiers signés.

Il nous a paru préférable, dans un volume donné, de sélectionner un certain nombre de notions, commandes, techniques et de les expliquer en profondeur, en détaillant le passage de la documentation à la pratique par le test, et de simplement citer les autres. Les techniques d'acquisition explicitées pour les premiers facilitant l'apprentissage en profondeur des secondes par le lecteur.

Comment lire cet ouvrage ?

De ce qui vient d'être écrit, nous déduisons que, bien entendu, la lecture de ce livre ne sera pas linéaire. Il devra être largement fait usage du sommaire et de l'index.

Le chapitre 1, Structure d'un micro-ordinateur , sera lu, parcouru ou négligé selon votre niveau de culture en micro-informatique et électronique. Il en ira de même pour les chapitres 2 et 3, L'architecture IA et Architecture système à ceci près qu'y sont donnés un certains nombres de renseignements indispensables qui ne sont pas repris dans la suite du livre. Le chapitre suivant, DOS et DEBUG : premiers programmes , est un peu particulier. Il propose quelques manipulations réalisables quelle que soit votre version de Windows, sans nécessité d'installer quoi que ce soit. De plus, il aborde la problématique de l'environnement pseudo-DOS sous Windows.

Les choses changent aux chapitres suivants, Assembleurs autonomes et Assembleurs intégrés . Dans ces deux chapitres, vous choisirez, installerez et testerez, si ce n'est déjà fait, un environnement de travail. Il est fortement conseillé d'installer un assembleur et ses outils issus du chapitre Assembleurs autonomes , et de celui sur Le macro-assembleur MASM , la distribution MASM32 par exemple, ainsi que Delphi 6, quitte à le désinstaller en fin d'apprentissage. Vous pourrez également opter pour une solution cent pour cent Visual Studio (6 ou .NET) si vous possédez ce produit, au prix d'un petit travail d'adaptation des exemples.

Donc, pour résumer : lecture facultative, mais survol conseillé, des premiers chapitres, puis, ou mieux parallèlement, installation des environnement de travail proposés. Vous serez ensuite en position de continuer l'exploration de l'ouvrage, dans l'ordre ou dans le désordre. Vous y trouverez, en trois chapitres, la présentation très commentée des jeux d'instructions standard, FPU, MMX, 3DNow! et SSE/SSE2. Puis un très long chapitre sur la programmation sous MASM, donc utilisable pour une majorité d'assembleurs autonomes. Enfin, nous traiterons de cadres de pile, de programmation Windows et de DLL, de chronométrage de code et donc d'optimisation.

Des notions importantes sont susceptibles d'être expliquées à n'importe quel endroit de l'ouvrage, qui fourmille d'exemples simples mais pragmatiques : que se passe-t-il si ... ? Il est donc important de ne pas se contenter de lire les chapitres consacrés à l'environnement de votre choix.

Pensez à ouvrir le CD-Rom dès le début de la lecture, il peut s'y trouver des renseignements non signalés dans les pages du livre.

Contact

Il est possible, et même bienvenu, de contacter l'auteur pierre.maurette@laposte.net . Si votre message est muni d'une adresse de retour valide, vous pourrez être tenu au courant d'informations complémentaires, et d’éventuelles suites sur Internet données à l'ouvrage. Donc, à bientôt et bonne lecture.

Sète, juin 2003

Pierre Maurette

Envoyer un message à l'auteur

se connecter pour pouvoir écrire

Ce site est créé et maintenu (laborieusement) par Pierre Maurette
hébergé par 1 & 1