Obligement - L'Amiga au maximum

Dimanche 28 mai 2017 - 03:02  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Hit Parade
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

 · Actualité (récente)
 · Actualité (archive)
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel (tests)
 · Matériel (bidouilles)
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Articles divers

 · Articles in english
 · Articles in other languages


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


Jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Soutien

N'hésitez pas à soutenir le projet Obligement



Contact

David Brunet

Courriel

 


Point de vue : Assembleur et Amiga
(Article écrit par Charles Vassallo et extrait d'A-News (Amiga News) - août 1988)


Que les choses soient claires : je n'ai qu'une connaissance de bric et de broc de l'Amiga. Douze brics ici, neuf brocs là, et pas grand-chose ailleurs. La vie serait triste si on ne parlait que de ce qu'on connaît à fond. Je vais donc parler d'assembleur à ma façon. Si vous avez une expérience dans ce domaine qui contredise la mienne ou qui la complète, prenez la plume à votre tour, pour le plus grand bénéfice des lecteurs de A-News - et le mien.

Pourquoi faire de l'assembleur ? Dans mon cas, par plaisir et par paresse. Le plaisir de commander directement le coeur de la machine. Comme cela passe pour difficile, on savoure d'autant plus les réussites. Paresse : je suis généralement très satisfait d'AmigaBasic et je n'ai jamais eu le courage de me mesurer au C ou à Modula-2. C'est lent ? Mettez-y un peu de langage machine !

Parenthèse sur le BASIC

Parenthèse sur AmigaBasic : certains font la fine bouche sur cette survivance du passé et ne jurent que par les langages totalement structurés genre C, Pascal, Modula-2. A la rigueur, quelques BASIC modernes (True Basic par exemple) également très structurés. Les mêmes personnes daignent trouver un grand intérêt à l'assembleur et je trouve cela piquant, car l'assembleur en lui-même est encore moins structuré que AmigaBasic.

A mon avis, le seul problème, dans n'importe quel langage, est de savoir écrire un programme que vous pourriez reprendre un an après sans avoir à le réécrire en entier. Cela s'apprend, quels que soient les avantages ou les chausse-trappes que le langage vous tend. Le grand intérêt d'AmigaBasic est de grandement simplifier la vie en gérant directement un large éventail des ressources de la machine. Son grand inconvénient est qu'il stérilise plus de 100 ko en mémoire ; si vous avez un gros programme graphique... Sa lenteur ? Revenons à l'assembleur.

Avez-vous déjà programmé une calculette de poche style HP41 ? Si oui, vous savez faire de l'assembleur. Un peu plus de registres, un peu plus d'instructions, mais c'est la même philosophie.

Comment faire de l'assembleur ? Il faut satisfaire à trois conditions :

1. Avoir un programme assembleur, c'est-à-dire le logiciel qui va traduire les instructions symboliques comme "move.l d0,(a1)" en code 68000.

2. Connaître les règles du jeu concernant le 68000 (ses registres, ses instructions, ses modes d'adressage). Vous ne trouverez pas cela dans la notice de votre assembleur. En français, vous pouvez acquérir "Mise en oeuvre du 68000" par C. Vieillefond (Sybex, 238 FF).

3. Connaître les règles du jeu du côté Amiga, c'est-à-dire son système d'exploitation. Rien en français (à part le manuel AmigaDOS) ; la série des Reference Manuals (Rom Kernal I et II, Intuition, Hardware) par Addinson-Wesley, se trouve aisément en France pour environ 1500 FF et... 2000 pages. Trop cher, trop gros ? Je comprends que vous hésitiez, mais c'est pourtant indispensable pour tout travail sérieux. Notez qu'il s'agit des mêmes manuels techniques que pour faire du C ou du Modula-2.

Mais on deviendrait triste à toujours être sérieux. Si vous voulez seulement goûter à l'assembleur en réservant à plus tard la décision d'investir plus... sérieusement, essayez donc "Amiga : le livre du langage machine", chez Éditions Micro Application (199 FF). Je crois qu'il s'agit d'un très bon ouvrage d'initiation, qui se suffit à lui-même. On y trouve une présentation rapide mais efficace des instructions du 68000, puis une succession de programmes permettant un véritable apprentissage, depuis de simples programmes de conversion binaires/décimal/hexa jusqu'à une présentation solide de la programmation sous Intuition, en passant entre autres par l'accès des registres machines et le travail avec les fonctions de la bibliothèque DOS.

Le livre est écrit pour un assembleur bien précis : K-Seka de Kuma Computers Ltd (Royaume-Uni). On y propose aussi de se servir d'un autre produit, Profimat de Micro Application, mais celui-ci ne serait disponible qu'en septembre 1988 (j'ai l'impression qu'une version américaine existe déjà sous le nom Assem-Pro, commercialisée par Abacus). N'essayez pas de vous en sortir avec le Macro-Assembler de MetaComCo ou l'un des produits disponibles dans le domaine public. Il faut absolument un produit interactif où l'on passe instantanément de l'éditeur à l'assembleur et au débogueur et réciproquement.

K-Seka est idéal pour cela. Vous appuyez sur "Escape" et vous êtes dans l'éditeur. Vous tapez quelques instructions, vous réappuyez sur "Escape" et vous êtes au niveau assembleur-débogueur. Vous tapez "a" pour assembler. En cas d'erreur, l'assemblage s'arrête avec une indication sur la faute commise : parfait pour apprendre sur le tas ce qui est permis ou interdit en matière de modes d'adressage. S'il n'y a pas d'erreur, votre programme est déjà chargé dans le débogueur. Vous pouvez le lancer et l'arrêter où vous le souhaitez, puis poursuivre pas à pas pour vérifier si tout se passe bien dans les registres et les mémoires. Ça ne va pas ? "Escape", et vous êtes de retour dans l'éditeur, où votre programme source attend la suite de vos cogitations.

Pas de miracle

Ce livre aborde donc de nombreux domaines - plus en fait que je n'en ai pratiqués. Mais n'en attendez pas de miracle : on ne peut pas résumer en 200 pages les 2000 pages des manuels de référence. Il y a donc des pans entiers de l'Amiga qui ne sont pas effleurés, tout le système graphique par exemple, mais il fallait évidemment faire un choix. Il y a tout de même au moins un oubli fâcheux : on ne dit pas qu'il faut répondre (avec "ReplyMsg") à chaque message reçu par Intuition et lu par GetMsg. Ce manque de courtoisie envers le système risque de faire vivre le lecteur dangereusement, surtout s'il essaie de suivre les mouvements de la souris. Sans que cela soit aussi grave, on peut aussi regretter le silence sur les fonctions "Wait" et "WaitPort" que je crois indispensables à la philosophie multitâche de l'Amiga. Enfin, on peut regretter l'absence de références pour approfondir l'étude du système.

Je voudrais citer une anecdote personnelle pour insister sur l'intérêt initiatique de ce livre. Après avoir acquis un Amiga, j'avais rapidement cherché un assembleur pour faire une routine de calcul d'ensemble de Mandelbrot. A l'époque, je ne connaissais que le produit quasi officiel de MetaComCo. Il n'était pas disponible en France et j'avais dû me contenter de K-Seka, produit inconnu, avec pratiquement aucune information sur le système interne de l'Amiga. Cela ne m'avait pas gêné pour faire ma routine, que j'avais interfacée au BASIC à grand renfort de "Peek" et de "Poke" mais j'avais dû ensuite laissé dormir mon K-Seka, craignant fort de ne jamais pouvoir en tirer grand-chose sur l'Amiga.

Quand j'ai vu apparaître des articles d'initiation à l'assembleur dans des revues américaines, j'ai même acheté le Macro-Assembler pour faire les exercices et c'est seulement là que j'ai compris comment je pouvais les transcrire sur K-Seka. Du même coup, un exercice d'ouverture d'une fenêtre sous Intuition, qui demandait quelques jongleries de fichiers et de 5 à 10 minutes avec le Macro-Assembler, devenait quasi instantané ! Ce livre permet de faire l'économie de ce parcours spirituel et de tout de suite expérimenter sur le système. A mon avis, c'est un ouvrage à recommander pour faire ses premiers pas en assembleur sur l'Amiga, en dépit de ses limitations - à condition de le lire K-Seka (ou Profimat, quand celui-ci sortira) en main.

Le problème des fichiers "include"

La grande différence entre K-Seka et les assembleurs plus classiques genre Macro-Assembler vient du traitement des fichiers "include". Quand on programme l'Amiga, on passe énormément de temps à remplir des listes de variables, à appeler les fonctions dans telle ou telle bibliothèque, puis à lire les listes de variables retournées par ces fonctions. Toutes ces variables ont des noms officiels qui sont répertoriés dans ces fameux fichiers "include". Par exemple, pour savoir quel gadget a envoyé un message au programme, on écrira :

include 'intuition.i'
......
move.l message,a0
move.l im_IAddress(a0),a1
......

Dans cet exemple, "message" est une adresse fournie par le programme, et "im_IAddress" est l'un de ces noms officiels. En fait, c'est un nombre ($IC = 28), qui est calculé lors de l'assemblage de l'instruction "include", à partir du fichier "intuition.i". C'est cet assemblage des fichiers "include" qui prend si longtemps avec le Macro-Assembler, tout simplement parce que l'ensemble de ces fichiers est énorme (environ 270 ko). On n'appelle pas tout à la fois, mais on a vite fait d'en demander la moitié.

K-Seka règle le problème de manière expéditive : il ignore l'instruction "include". Il faut faire soi-même le travail correspondant (ce n'est pas très difficile, simplement casse-pied) et remplacer la ligne "include" par :

im_IAddress=28
......

(les points de suspension signifient qu'il faudra de nombreuses définitions de ce type, en fait pour toutes les variables système dont on aura besoin). On pourrait aussi s'épargner la ligne de définition et écrire directement :

move.l 28(a0),a1

...mais comprendrez-vous de quoi il s'agit quand vous relirez votre programme un an après ?

Conclusion

On aura compris que suis très content de K-Seka. Il y a néanmoins quelques faiblesses qui peuvent être gênantes. Il y a des problèmes entre le débogueur et l'extension mémoire ; je dois geler celle-ci avec un utilitaire du genre NoFastMem pour tout programme impliquant la création d'un nouvel écran. L'assemblage conditionnel des macros ne fonctionne pas toujours correctement. Je n'ai jamais été longtemps bloqué par ces misères, mais il faut préciser que je ne fais pas de très longs programmes (je n'ai pas dépassé le millier de lignes). Peut-être d'autres problèmes plus graves sont embusqués et attendent les programmeurs plus gourmands.

Cela ne change pas ma conclusion : K-Seka est un excellent outil pour s'initier à l'assembleur sur l'Amiga.


[Retour en haut] / [Retour aux articles]