Obligement - L'Amiga au maximum

Jeudi 25 avril 2024 - 09:55  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

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

Articles in english


Réseaux sociaux

Suivez-nous sur X




Liste des 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,
ALL


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


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


Le courrier des lecteurs d'Amiga News Tech - décembre 1991
(Rubrique animée par OK et Cancel et extraite d'Amiga News Tech - décembre 1991)


Débutant en assembleur

Bonjour. Connaissant le BASIC et ayant quelques notions d'assembleur sur une autre machine, je souhaiterais maintenant apprendre l'assembleur sur Amiga. Je dois donc acquérir un certain nombre de logiciels et de livres. Quel est à votre avis la meilleure configuration (assembleur, débogueur, environnement permettant à fois de travailler avec l'assembleur et le débogueur) ? Et quels sont les livres nécessaires (initiation à l'assembleur, dictionnaire des mnémoniques, ouvrages détaillant le jeu d'instructions du 68000 ou le système...) ? Et où puis-je trouver ces livres ? [Benoît Kerdraon, Brest].

Réponse

D'accord, mais c'est la première et la dernière fois que nous répondons à ce genre de lettre : beaucoup de "débutants" sur Amiga sont dans votre cas, et 80% du courrier que nous recevons pose ces mêmes questions. Veuillez donc tous bien noter ce qui va suivre, on ne le répétera pas.

Le meilleur environnement de développement en assembleur est à notre humble avis, on n'a pas cessé de le dire, le Devpac version 2 de la société anglaise HiSoft : éditeur, assembleur et débogueur travaillent de concert et main dans la main et garantissent un développement rapide et sûr. Toutefois, de petits nouveaux font leur apparition depuis quelque temps, notamment AsmOne de l'allemand DMV-Verlag, pas mal non plus dans son genre. Pour les petites bourses, nous vous conseillons de vous tourner vers le domaine public : A68K, pour ne citer que lui, est un excellent assembleur (qui ne présente qu'un seul défaut, celui d'être incapable de produire un fichier exécutable sans passer par une phase supplémentaire d'édition de liens).

Côté livres, en plus de l'ANT, il faudra (qui a dit hélas ?) vous tourner du côté de Micro Application : "Bien Débuter en Assembleur", "Le Livre du Langage-Machine", "La Bible de l'Amiga"... vous permettront, une fois toutes les erreurs détectées et corrigées, de vous en sortir. Par la suite, si vous désirez vous attaquer plus avant au système multitâche, les "ROM Kernel Manuals" (en trois volumes) seront indispensables. Divers ouvrages sur le 68000 lui-même existent çà et là, le meilleur étant - je pense - "Mise en Oeuvre du 68000" par Christine Viellefond aux éditions Sybex. Sachez également que le mode d'emploi du Devpac contient un guide du MC68000, véritable petit bijou que tout programmeur en assembleur se devrait de posséder.

Appel de programme du CLI, encapsuler un programme

Chère ANT, je me permets de vous écrire afin que vous puissiez apporter un peu de lumière au pauvre programmeur que je suis. Je voudrais connaître le moyen d'appeler un programme systématiquement après que toutes les tentatives de recherche ont échoué et ce à partir de n'importe quel CLI. Par exemple, on tape "bonjour" et si le programme bonjour n'existe pas (ou bien s'il n'est pas trouvé dans le chemin courant), ce programme par défaut s'exécute pour afficher, par exemple, "tu t'as gouru".

Je cherche aussi à encapsuler un programme, comme pour IF, ELSE, ECHO... du Shell d'ARP (ASH), mais pas à la manière du CSH, c'est-à-dire un programme lancé, qui prend la main et utilise ses propres fonctions pour les exécuter et donc avec aucune modification possible. Ceci dans le but de créer une sorte de Shell qui serait adaptable au plaisir de chacun, mais qui prendrait moins de place sur disquette et éviterait de jouer au grille-pain pour ceux qui n'ont qu'un seul lecteur. Quelles sont les limites de Forbid() et Disable(), dans quelle mesure peut-on les utiliser sans risquer un effondrement du système ?

Quelques remarques avant de vous quitter. D'abord, quelques erreurs se sont glissées dans l'article de Loïc Far sur le MC68000 : l'instruction MOVE générale se code comme suit :
 15  14 | 13  12 | 11  10  09  08  07  06 | 05  04  03  02  01  00
  0   0 | Taille |   Adresse effective    |   Effective Adresse
Où "Size" égale 01 pour un octet, 11 pour un mot et 10 pour un mot long, "Adresse effective" est codée comme expliqué dans le premier article, ainsi que "Effective adresse", avec toutefois inversion des tribits, c'est-à-dire Registre (3 bits) + Code-Op (3 bits). De plus, certaines instructions n'ont pas tous les modes d'adressage. Mais sinon, l'article était bien fait, et je le remercie de l'avoir écrit [Olivier Garrigues, Lunel].

Réponse

Si l'on excepte le fait qu'ANT est masculin (on dit un Amiga NewsTech, eh oui, qui l'eût cru ?), votre lettre est exemplaire. Laissez-nous donc vous remercier comme vous le méritez. Merci donc, et tout d'abord pour cette longue lettre elle-même, dont nous n'avons évidemment pu publier que quelques passages.

Merci également pour les rectifications apportées à l'article de Loïc Far. Comme quoi personne n'est jamais parfait... Désolé, mais nous ne sommes pour l'instant pas en mesure de répondre à vos questions sur le chemin et l'encapsulation de programmes... Avec quelques recherches, la première pourra sans doute être rapidement résolue (nous vous tiendrons au courant)... Quant à la seconde, je crains qu'il ne vous faille renoncer à cette idée. Une solution acceptable, aux résultats identiques, serait de profiter de la possibilité de résidence de quasiment toutes les commandes CLI : une fois en mémoire, elles y restent, et ce sont les mêmes segments de code qui sont réutilisés à chaque appel...

Forbid() interdit le multitâche, c'est-à-dire qu'Exec ne gère plus le partage du temps processeur entre les différentes tâches actives, gestion qui intervient à chaque interruption, lesquelles sont d'ailleurs toujours autorisées. Car c'est justement Disable() qui se charge de les interdire, et donc le multitâche avec. Le problème, c'est que certaines tâches particulières du système, comme le keyboard.device et le trackdisk.device, comptent énormément sur la disponibilité d'autres sous-tâches qui leur sont rattachées... Ainsi par exemple, si vous travaillez en mode multitâche et appelez Fobrid() ou Disable() pendant un accès disque, des erreurs de lecture peuvent survenir. Par contre, il n'y a aucun problème à interdire les interruptions, même pendant une très longue période, si votre programme s'approprie la machine entière (démo, jeu...). Le retour au système (si retour au système il y a...) ne posera aucun problème.


[Retour en haut] / [Retour aux articles] [Article précédent] / [Article suivant]