COURS 5.TXT/fr: Difference between revisions

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

Revision as of 15:08, 23 November 2023

   ******************************************************************
   *                                                                *
   *             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