Obligement - L'Amiga au maximum

Vendredi 19 avril 2024 - 13:30  

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

 


Programmation : Assembleur - le registre VBR
(Article écrit par Frédéric Delacroix et extrait d'Amiga News - juin 1997)


Aujourd'hui, une fois n'est pas coutume, nous allons moins nous intéresser au système qu'au coeur matériel de l'Amiga : le processeur, plus particulièrement le fameux registre VBR, ce qui devrait achever de convaincre les quelques irréductibles qu'il n'est pas bien de taper aveuglément aux adresses 0-$400.

Tout ce qui sera dit dans cet article ne concernera que les Amiga équipés d'un processeur 68010 ou supérieur. En effet, le simple 68000 ne dispose pas de VBR et sa table d'exception reste toujours à l'adresse 0.

Vous l'avez compris, il s'agit ici des exceptions du processeur. Une telle exception est un événement "inattendu" qui dérange le processeur pendant l'exécution normale des instructions. Ce peut être une interruption, une instruction TRAP, une erreur du style adresse impaire ou autre. Lorsqu'un tel événement se produit, sans entrer dans les détails, disons que le processeur empile son contexte (compteur de programme, registre d'état) et passe en mode superviseur. Il saute alors à l'adresse indiquée par le vecteur d'exception qui l'oriente vers la routine de traitement de l'interruption (sur l'Amiga, ce peut être le Guru). Une fois le traitement de l'exception terminé par l'instruction rte (Return from exception), le contexte est dépilé et le cours normal des opérations reprend.

Le sujet d'intérêt est ici le vecteur d'exception : ils sont tous regroupés (un par type d'exception) dans une table, nommée la table d'exception. Cette table se situe en mémoire à l'adresse pointée par le registre VBR (Vector Base Register) du processeur. Ce registre est toujours nul après une réinitialisation, mais il peut être modifié par la suite.

Revenons à l'Amiga. Le système ne touche absolument pas à ce vecteur, ce qui fait que la table d'exception se trouve à l'adresse 0, c'est-à-dire en mémoire Chip. C'est un inconvénient car le processeur doit partager l'accès à cette mémoire avec les circuits spécialisés qui font des accès DMA. L'idée est donc de mettre à profit ce registre pour déplacer la table en mémoire Fast, là où le processeur règne en maître. L'avantage saute aux yeux : un gain de rapidité significatif (n'oubliez pas que le système se sert abondamment des exceptions, par exemple pour la commutation des tâches).

Le programme que je vous propose fait exactement cela : après avoir vérifié le type de processeur, il détermine le contenu du registre VBR pour voir s'il est déjà ou non en mémoire Fast. Au passage, cela nécessite l'emploi de la fonction Supervisor() (sur laquelle je ne m'étendrai pas outre mesure), car on a besoin de MOVEC, qui est une instruction privilégiée, pour accéder au VBR. Puis 1 ko de mémoire Fast est alloué et la table d'exception y est recopiée. Enfin, le contenu du VBR est modifié pour signaler la nouvelle table.

Tout programme "propre" n'y verra que du feu. En revanche, certains jeux qui écrivent directement dans les adresses 0-$400 afin de placer leurs propres interruptions sans tenir compte du VBR en seront pour leurs frais, puisque la table ne sera plus à cet endroit. Au mieux, le jeu ne marchera pas, au pire le Guru viendra.

Pour l'assemblage du programme, HiSoft Devpac 3.50 est nécessaire. N'oubliez pas la directive MACHINE pour signaler la génération de code 68010 (MOVEC n'existe pas sur 68000).

Assembleur
Assembleur


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