COURS 5.TXT
Jump to navigation
Jump to search
******************************************************************
* *
* 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