COURS 5.TXT/fr
****************************************************************** * * * COURS D'ASSEMBLEUR 68000 SUR ATARI ST * * * * par Le F�roce Lapin (from 44E) * * * * Cours num�ro 5 * * * ****************************************************************** Suite de l'�tude du Status register, les interruptions. Etant donn� que nous avons parfaitement compris ce qui se passait dans le cas o� le 68000 trouvait le bit T du Status Register � 1, c'est-�-dire tout le syst�me d'adresse fixe � laquelle on trouve l'adresse de la routine, nous allons pouvoir continuer et en fait finir la description des autres bits de ce Status Register. Le bit S / Superviseur Le 68000 peut �voluer dans 2 modes: le mode Superviseur et le mode Utilisateur. Dans le mode superviseur, nous avons acc�s � TOUTES les instructions du 68000 et � TOUTE la m�moire, alors qu'en mode utilisateur certaines instructions ne peuvent �tre em- ploy�es, et l'acc�s � certaines parties de la m�moire est in- terdit. Effectivement cela peut sembler au premier abord surprenant: Vous avez achet� une machine, c'est quand m�me pour pouvoir l'uti- liser dans sa totalit�! L� encore, nous tombons dans le pi�ge qui consiste � m�langer ATARI ST et 68000 MOTOROLA. Gr�ce � l'�norme puissance de ce micro-processeur, il est tout � fait possible d'envisager un travail multi-utilisateur. Gonflons notre ST � 8 Mega octets, �quipons le d'un �norme disque dur, et connectons le � plusieurs terminaux. Nous avons donc plu- sieurs claviers, plusieurs �crans, mais en revanche un seul mi- cro-processeur, celui de l'unit� centrale (dont le nom prend ici toute sa valeur) et une seule m�moire, dans laquelle tout le monde pioche � tours de bras. L�, la diff�renciation Superviseur/Utili- sateur prend son sens. Le Superviseur, c'est le 'propri�taire' de l'unit� centrale, les personnes utilisant les terminaux n'�tant que des 'utilisateurs'. Le fait de ne leur autoriser qu'une partie des instructions et de la m�moire, a pour but d'�viter les planta- ges car si dans le cas d'une mono-utilisation, un plantage total de la machine est toujours g�nant, dans le cas d'une multi-utili- sation, cela rel�ve de la catastrophe, car on ne plante plus le travail d'une seule personnes mais de plusieurs! Le bit S du Status Register, s'il est � 0, indique que nous sommes en mode Utilisateur. A 1, il indique que nous sommes en Super- viseur. Tout comme MONST indiquait l'�tat Trace en indiquant T � c�t� du SR, il indique U ou S suivant le mode dans lequel nous nous trouvons. Jetons un coup d'oeil en arri�re sur le chapitre d�crivant le bro- chage du 68000 (cours suppl�mentaire A). Nous retrouvons cette distinction au niveau des broches FC0, FC1, FC2. Avant d'�tudier les 3 bits restant du SR (I2, I1, I0), il faut sa- voir que le Status Register est en fait s�par� en 2 octets. L'oc- tet de poids fort (bit 8 � 15) est appel� octet superviseur, alors que l'octet de poids faible est l'octet utilisateur. En mode utilisateur on ne peut �crire que dans l'octet utilisateur alors qu'en mode superviseur nous avons acc�s au word dans sa to- talit�. L'octet utilisateur contenant les bits de conditions (bits X N Z V C), on l'appelle �galement registre des codes conditions (Condi- tion Code Register), ou CCR. Les bits I2, I1 et I0 (Interrupt Mask) Ces 3 bits servent � repr�senter les masques d'interruption. Mais voyons tout d'abord ce qu'est une interruption. Nous avons �tudi� pr�c�demment le fonctionnement li� au bit T (trace). Lorsque ce bit est positionn�, le programme principal est interrompu, au pro- fit d'une routine sp�ciale. C'est en quelque sorte le principe de l'interruption. Une routine en interruption, c'est un bout de programme diff�rent du programme principal. A intervalles r�guliers ou � cause d'un �l�ment ext�rieur, le 68000 va interrompre (c'est bien le mot!) le programme principal, pour aller ex�cuter cette routine. Lorsque celle-ci sera termin�e, il y aura retour au programme principal. L'exemple le plus simple est celui du t�l�phone: Je travaille � mon bureau (c'est le programme principal) lorsque le t�l�phone sonne. Je d�tecte l'interruption, j'arr�te mon travail et je d�- croche (ex�cution de l'interruption). La conversation termin�e, je raccroche et je retourne � mon occupation premi�re. Maintenant, plus compliqu�: Interruption de mon travail principal. Je d�croche, mais en cours de conversation, on sonne � la porte. L� intervient le principe de la priorit� d'interruption. Si la porte d'entr�e � une priorit� sup�rieure � celle du t�l�phone, j'interrompt la conversation t�l�phonique pour aller ouvrir: Il y a interruption de l'interruption. Une fois claqu� la porte au 124�me marchand de balayettes de la journ�e je reprends le t�l�- phone, je finis la conversation, je raccroche puis je me remets � ma t�che principale. Par contre, si l'interruption 'porte d'entr�e' a une priorit� inf�rieure � celle du t�l�phone, j'attendrai d'avoir fini avec ce- lui-ci avant d'aller ouvrir. Les 3 bits I2, I1 et I0 (Interrupt mask) permettent de d�finir le niveau mini d'interruption qui sera pris en cours. Comme on ne poss�de que 3 bits, on ne peut d�finir que 7 niveau, de 1 � 7 (on ne parle pas ici du niveau 0, car c'est le niveau de travail 'nor- mal' de la machine. Si le niveau est � 0, c'est qu'il n'y a pas d'interruption.). Ainsi, si nous avons 011 pour ces 3 bits, nous obtenons 3 comme niveau mini. Les interruptions de niveaux 1 et 2 ne seront donc pas prises en compte. Puisque le niveau indiqu� par les 3 bits sera accept� comme niveau d'interruption, nous en d�- duisons que si les bits sont � 111, seuls les interruptions de ni- veau 7 seront prises en compte. Or nous voyons bien �galement qu'il n'est pas possible de d�finir un niveau minimum de 8 par exemple, et donc qu'il sera impossible d'emp�cher une interruption de niveau 7. Ce niveau est donc dit 'non-masquable'. Les interruptions de niveau 7 sont donc appel�es NMI c'est � dire non-maskable-interrupt. A noter qu'il n'est pas possible d'op�rer une s�lection pr�cise et par exemple d'autoriser les interruptions de niveaux 4, 5 et 7 et pas celles de niveau 6. Si les bits sont � 100, les interruptions de niveau 4, 5, 6 et 7 seront autoris�es. Vous pouvez jeter � nou- veau un coup d'oeil sur le cours annexe A. Vous retrouverez bien sur le 68000 les broches I2, I1 et I0. Une remarque cependant, ces broches sont actives � l'�tat bas, c'est-�-dire qu'elle indique quelque chose lorsqu'il n'y a pas de courant, � l'inverse des au- tres broches. Par contre leur repr�sentation au sein du Status Register se fait dans le bon 'sens'. Nous sommes maintenant amen�s � nous poser une question similaire � celle que nous nous sommes pos�e lors de l'�tude du mode Trace. Le 68000 re�oit une demande d'interruption. Il compare le niveau de celle-ci � la limite fix�e par les bits I du Status Register. Si l'interruption est acceptable, il sauve le Status Register et met en place dans les bits I le niveau de l'interruption qu'il va ex�cuter afin de ne pas �tre g�n� par une autre demande plus fai- ble. Il stoppe alors l'ex�cution de son programme principal pour se d�tourner vers la routine. Une fois celle-ci termin�e, il re- vient au programme principal. C'est bien joli, mais o� a-t-il trouv� la routine en interruption ? Et bien simplement en utili- sant le m�me principe que pour le mode Trace. Nous avons vu que lorsque le bit T �tait en place, le 68000 allait voir � l'adresse $24 et qu'il y trouvait un long mot, ce long mot �tant l'adresse de la routine. Pour les interruptions, le principe est le m�me: si c'est une interruption de niveau 4, c'est � l'adresse $70 que le 68000 trouvera un long mot, ce long mot, comme dans le cas du mode Trace �tant l'adresse de la routine � ex�cuter. Si l'interruption est de niveau 1, c'est le long mot situ� � l'adresse $64 etc... Il est bien �vident que c'est au programmeur de placer ces long mots � ces adresses: On pr�pare une routine, on cherche son adresse de d�part, puis on note celle ci � l'endroit pr�cis o� l'on sait que le 68000 viendra la chercher. Toutes ces adresses �tant situ�es dans le premier kilo de m�moire de notre machine, �tudions de plus pr�s ces 1024 octets. (Vous trouverez un tableau repr�sentant ce kilo en annexe) Pour le mo- ment nous n'allons faire qu'y rep�rer les quelques �l�ments que nous avons d�j� �tudi�s. Toutes ces adresses ont des num�ros d'or- dres, et � cause de leur fonction propre (ne faire que communiquer l'adresse d'une routine), on les appelle 'vecteurs'. Nous retrouvons bien en $24 le vecteur 9, correspondant au mode Trace, de $64 � $7C les vecteurs correspondants aux interruptions de niveau 1 � 7. Le niveau 0, �tant le niveau 'normal' de travail, n'a pas de vecteur. Nous pouvons d�j� expliquer d'autres vecteurs: Ainsi le num�ro 5 (adresse $14) c'est le vecteur de division par 0. Le 68000 ne peut pas faire de division par 0. Lorsque le programme essaye, il se produit la m�me chose que pour le mode Trace: Ayant d�tect� une division par 0, le 68000 fonce � l'adresse $14, y trouve une adresse de routine et va ex�cuter celle-ci. Dans la plupart des cas cette routine va afficher quelques bombes � l'�cran et tout bloquer. Rien ne vous emp�che cependant de pr�parer votre propre routine et de mettre son adresse en $14. Ainsi dans un programme de math (beurkk!) cette routine peut afficher "division par 0 im- possible". Si l'utilisateur tente une telle division, inutile de faire des tests pour le pr�venir de cette impossibilit�, le 68000 s'en chargera tout seul. Les autres vecteurs Erreur bus. Nous avons vu pr�c�demment que le 68000 utilise ce que nous appelons un bus pour recevoir ou transmettre des donn�es. Si une erreur survient sur celui ci, il y a saut a l'adresse $8 pour trouver l'adresse de la routine qui sera alors ex�cut�e. Erreur d'adresse. Le 68000 ne peut acc�der qu'� des adresses paires. S'il tente d'acc�der � une adresse impaire, il se produit une erreur d'adresse (m�me principe de traitement que l'erreur bus, ou le mode Trace, vecteur, adresse etc...). Nous verrons plus tard qu'il nous sera possible d'acc�der � des adresse impaires, mais avec des pr�cautions. Instructions ill�gales. Nous avons vu que le travail de l'as- sembleur consistait simplement � transformer en chiffres, ligne par ligne, notre programme. Cependant, si nous mettons en m�moire une image, celle-ci sera �galement plac�e dans le 'tube m�moire' sous forme de chiffres. La diff�rence c'est que ces chiffres l� ne veulent rien dire pour le 68000 en tant qu'instruction. Si nous ordonnons au 68000 d'aller � cette adresse (celle de l'image) il essayera de d�crypter ces chiffres comme des instruc- tions, ce qui d�clenchera une erreur 'instruction ill�gale'. Violation de privil�ge. Nous avons vu que le 68000 pouvait �vo- luer en mode utilisateur ou en mode superviseur. On dit que l'�tat superviseur est l'�tat privil�gi� (ou �tat de plus haut privil�ge). Tenter d'acc�der en mode utilisateur � une zone m�- moire r�serv�e au mode superviseur ou bien tenter d'ex�cuter une instruction privil�gi�e (donc utilisable uniquement en supervi- seur) provoquera une erreur 'violation de privil�ge'. Conna�tre ces diff�rents types d'erreurs est tr�s important. En effet la phase de mise au point est g�n�ralement longue en assem- bleur, surtout au d�but. De tr�s nombreuses erreurs peuvent surve- nir, dont la cause est parfois juste sous notre nez. Le type m�me de l'erreur, si celle-ci est bien comprise, peut souvent suffire � orienter les recherches plus pr�cis�ment et ainsi raccourcir le temps (p�nible) de recherche du grain de sable qui bloque tout! Tous les vecteurs constituant le premier kilo de m�moire ayant pour but de d�router le programme principal vers une routine ex- ceptionnelle, sont appel�s 'vecteurs d'exceptions'. Les vecteurs restants seront �tudi�s dans les s�ries suivantes, au fur et � mesure des besoins. Chaque chose en son temps! Pour aujourd'hui nous nous arr�terons l�. Ce fut court mais le prochain chapitre sera consacr� � la pile et sera bien gros! La pile est un probl�me aussi simple que les autres, qui demande simplement de l'attention. Apr�s avoir �tudi� ce qu'est la pile, il ne nous restera plus qu'un demi-cours avant d'aborder nos pre- miers 'gros' programmes! Courage! mais surtout prenez votre temps! Relisez les cours pr�c�- dent m�me si tout vous para�t compris. Plus nous avancerons plus le nombre de petites choses augmentera et moins il y aura de place pour la plus petite incompr�hension.
Back to ASM_Tutorial