EPISODE
I
LA
MENACE HEXADECIMALE
|
Dans ce nouvel
épisode, nous allons aborder le Saturn. Le Saturn est le
processeur de la HP, c’est lui que vous allez comander. Pour ceux
qui ne le savent pas, le Saturn a été conçu
par Hewlett-Packard à la fin des années 70. Il a
été conçu pour les opérations de type
DCB (Décimal Codé Binaire) et pour une basse consommation
d’énérgie. Les differentes versions du Saturn équipent,
depuis la HP 71, toutes les calculatrice de notre marque fétiche.
Il semble que la HP 49G soit l’une des toutes derniere calculatrice
HP équipé de ce processeur. A la prochaine calcu,
il faudra changer ses habitudes de programmation ASM. Car ce language
dépend essentiellement du processeur. C’est pour cette
raison que nous allons étudier faire un peu de technique
en étudiant le fonctionnement du Saturn. Puis nous verrons
la mémoire du Saturn: les registres.
I)
In bed with the Saturn
On
va encore me prendre pour un ravagé du cul. "In
bed with the Saturn" fait reference à film un peu
Ole, Ole "In Bed With Madonna" avec … Madonna.
Nous allons
donc penetrer dans la vie intime du processeur de la 49G.
Treve de
plaisanteries, nous allons voir ce qu’est un processeur en géneral.
Puis nous verrons les caracteres propres du Saturn. Vous verrez,
c’est tres interressant.
1)
Qu’est ce que le processeur ?
Si,
je travaillais chez Intel Inside, je dirais: "C’est ce
qui donne toute la puissance à votre ordinateur et qui
vous permet de consulter des CD-ROM, d’utiliser des programmes
ludos-éducatif ou encore de surfer sur l’Internet".
Mais, ici, on n’est pas des Pedes, nous allons donc vous donner
la véritée sur le processeur.
Tout le
monde sait qu’un processeur un composant électronique
capable de traiter des fonctions selon un programme fourni.
La technologie actuelle ne permet aux processeurs de manipuler
que de bits. Pour les non-initiés, ce sont des 1 et des
0: le courant passe, le courant passe pas. C’est pour cette
raison qu’on s’est fait chier avec le binaire dans l’Episode
I. Toutes vos donnees sont codées, manipulées,
stockées sous forme de 1 et de 0. En paralnt de manipulations,
le processur ne fait que des opérations tres basiques:
lire, écrire, faire des tests ainsi que des additions
et des soustractions (avec des entiers positifs: N). Mais un
processeur tout seul, ça ne fait rien, il faut qu’il
communique avec des elements exterieurs. Un processeur est toujoours
adjoint à une mémoire contenant des resultats
et des programmes, une interface: des circuits d’entrée
et de sortie de l’information, et un bus: un lien entre tous
les élements du systeme informatique.

2)
Comment fonctionne le Saturn ? ou
Vie et Mort d’une instruction
Avant
que le processeur execute une commande, il se passe pas mal
de chose. On pourrait décomposer la vie d’une instruction
en six étapes. Tous les processeur traitent les instructions
sur le même schéma.
1- Un compteur
indique l’adresse en mémoire RAM de l’instruction. Ce
compteur
est une
petite mémoire du processeur que l’on nomme PC pour Program
Counter.
2- L’instruction
va voyager sur le bus et va arriver dans le processeur.
3- Cette
instruction va être décodé par des circuits
spécialisés du processeur.
4- L’information
sera transmise à un unité de traitement de l’instruction.
Cette
unitée
est cadencée par une horloge afin qu’il n’y ait pas d’instructions
décalées
dans le
temps. Cette unitée est cadencée à 4 MHz
sur le Saturn(1000 MHz pour le
plus puissant
des Pentiums III). C’est à dire que le processeur a 4
millions d’etats
par seconde.
Chaque état dure donc 0,25 µs. Sachez que l’execution
d’une
instruction
du language assembleur exige plusieurs cycles. Dans chaque cycle,
4
bits sont
traités car le Saturn est un processeur 4 bits ( 32 bits
pour une
Playstation
ou un Mac/PC ).
5- Les
circuits de commande execute l’ordre en faisant appel à
l’unité arithmetique
et logique
(ALU) qui va ,enfin, exécutée votre instruction.
6-Le résultat
va apparaitre dans une des mémoires du processeur et
pourra par la
suite
servir à d’autres calculs.
Ces
étapes sont "moyennement" géneralistes
car elles sont plus tournées vers le Saturn, car chaque
processeur a ses spécificitées. Justement, nous
allons étudiées plus en profondeur ces specificitées.
3)
Les spécifitées du Saturn
Nous
allons donc voir une par une ces spécificitées.
a)
Le mode de calcul
Comme
tout processeur, le Saturn calcule en héxadécimal.
Un chiffre héxadécimal est codé sur 4 bits
(un quartet). De plus, le quartet est la plus petite unitée
manipulable par le Saturn(Du fait que c’est un processeur 4
bits, masi ça on vous l’a deja dit). En fait, la base
16 est une representation plus simple pour le programmeur du
binaire. Mais, le processeur peut aussi calculer en base de
10: en DCB. Mais ce mode est à éviter, car la
gestion de la mémoire n’est pas optimisée et il
n’est pas simple de se le representer. On utilisera ce mode
que pour faire des calculs qui devront etre affiché à
l’ecran.
b)
Les adresses
Le
processeur désigne par une adresse un endroit de la mémoire
de la calculatrice. Une adresse est une case mémoire
d’un quartet. Nous nous vous avons dit et redit que le quartet
est l’unitée fértiche du Saturn. Pour mieux comprendre,
voici un petit schéma
Adresse
|
00000
|
00001
|
00002
|
00003
|
00004
|
00005
|
00006
|
Contenu
|
1001
|
1100
|
0011
|
0010
|
0011
|
0101
|
1000
|
Le contenu
de l’adresse 00006 est 01012 ou 516.
Comme,
vous avez du le remarquer dans cet exemple, le début
de toute mémoire est l’adresse 00000.
Les
objets sont stockées en mémoire prennent plusieurs
quartets. Les quartets de l’objet sont stockes les uns à
coté des autres. Lorsqu’on parle de l’adresse d’un objet,
on parle de l’adresse du premier quartet de l’objet.
Les
adresses sont définies par le Saturn sur 5 quartets.
Les adresses vont donc de 0000016 à FFFFF16. L’espace
adressable par le Saturn est donc:
FFFFF16
= 21020 = 104857610 adresses ou quartets => 512 Ko.
Pourtant
la HP 49G a plus de 2,5 Mo de mémoire. Comment fait elle
? Et bien, la, le programmeur doit reconfigurer la mémoire
afin de masquer certaines zones de la mémoire.
c)
Je te prends et je te retourne:
l’inversion des quartets
C’est
une des spécificitées des plus déroutantes
pour un débutant. Pendant les operations de lecture et
d’écriture, le Saturn va lire et ecrire à l’envers
les informations: Il lit et ecrit de droite à gauche.
Pour que ça soit plus clair, voici un exemple:
On veut
charger le contenu des adresses 00000 à 00004 dans la
memoire du processeur: voila ce que se passera:

N’oubliez
surtout pas cela lorsque vous écrirez et lirez en mémoire.
d)
Les interruptions
Pendant
l’execution d’un programme, le Saturn réagit à
certains signaux exterieurs: les interruptions. Ces interruptions
peuvent etre une pression sur la touche ON, l’horloge, la gestion
du raffraichissement de l’écran.
Pendant
une interruption, le Saturn arrette ce qu’il ést en train
de faire, traite cette interruption, puis continue son travail
comme si de rien n’était. On peut detourner ces interruptions
pour faire du multitache ou afficher des niveaux de gris. Mais
nous expliquerons cela plus tard.
En tous
cas, sachez que l’on peut interdire les interruptions afin d’accelerrer
le programme.
Maintenant
que vous avez compris ce qu’est un processeur et comment fonctionne
le Saturn, nous allons aborder un point tres important niveau
technique.
II)
La mémoire du Saturn
Nous
allons etudier les registres et les drapeaux du Saturn. Le programmation
en langage assembleur n’est qu’une question de registre et de
flag. Alors suivez bien ce qui va suivre.
1)
Les registres
Attention,
point tres important de la programmation ASM. Si vous ne comprenez
pas ce point, vous pouvez retourner à votre Ti-Basic.
En effet, l’assembleur est une histoire de calcul entre registres.
Mais savez vous au juste ce qu’est un registre ? Un registre
est une petite mémoire qui se trouvent physiquement dans
le processeur. On pourrait les comparer à des variables
dans le cas d’un langage de type Basic. Ces registres n’ont
rien à voir avec la RAM, mais peuvent communiquer avec
elle. Ils sont destines à être lu, modifié,
utilisés dans des calculs, etc. Ces registres n’ont pas
tous le même role et par conséquent n’ont pas toutes
les mêmes caractéristiques. Le Saturn est équipé
de 7 sortes de registres.
Nous allons
vous les énumérer dans un tableau de cette forme
Type du regitre: Type du regitre
|
Nb: Nb de regitre de ce type
|
Nom: Nom des differents regitres
|
Taille: En quartet et en bits
|
Usage et specificitées:
Usage premier du registres ainsi que certaines
|
Compris
? Oui ? Alors voila:
Type du regitre: Registre de calcul
ou de travail
|
|
|
Nb: 4
|
Noms: A, B, C, D
|
Taille: 16 quartets (64 bits)
|
Usage et specificitées:
Ce sont les plus importants. Ils servent à
manipuler des données et à faire des calculs.
Ces registres sont divisés en champ (voir I,5).
Les registres A et C ont des possibilitées plus
étendues que les registres B et D. Nous verrons
pourquoi apres
|
|
|
Type du regitre: Registre de sauvegarde
|
|
|
Nb: 5
|
Noms: R0, R1, R2, R3,
R4
|
Taille: 16 quartets (64 bits)
|
Usage et specificitées:
Ils sont utilisés pour sauvegarder les registres
de calcul A, B, C, D. Ils sont divisés de la même
fçon que ces derniers. L’interet de sauvegarder
directement dans le processeur est que l’opération
est moins gourmande en ressources processeur et plus simple
que d’écrire en RAM
|
|
|
Type du regitre: Pointeurs de données
|
|
|
Nb: 2
|
Nom: D0, D1
|
Taille: 5 quartets (20 bits)
|
Usage et specificitées:
Leur longueur est prevu pile pour des adresses (souvenez
vous le I,4) Les operations de lecture et d’écriture
en RAM se feront à l’adresse indiqué par
l’un des deux registres. Ils ont des liens privilegies
avec A et C (essentiellement A).
|
|
|
Type du regitre: Pointeur d’instruction
|
|
|
Nb: 1
|
Nom: PC
|
Taille: 5 quartets (20 bits)
|
Usage et specificitées:
Ce registre va lui aussi contenir une adresse. Mais
l’adresse de la prochaine instruction à executer.
Chaque commande modifie donc le contenu de registre. On
se sert directement de ce registre assez peu
|
|
|
Type du regitre: Pointeur de champ
|
|
|
Nb: 1
|
Nom: P
|
Taille: 1 quartet (4 bits)
|
Usage et specificitées:
Ce registre permettra de configurer la longueur d’un
champ(on verra ça dans l’Episode III). Il est aussi
utiliser comme compteur car les operations d’incrementation
et de décrementation (+1 / -1) sont tres rapides
avec P.
|
|
|
Type du regitre: La pile des retours
|
|
|
Nb: 1
|
Nom: RSTK
|
Taille: 8 x 5 quartets
|
Usage et specificitées:
Voila un registre tres special. En fait il s’agit
d’une pile qui peut contenir 8 éléments
de 5 quartets. En fait cette pile, de type LIFO (Last
In First Out), permet d’enrgistrer les adresses de retour
dans le cas d’un appel de sous-programme.
Pour ceux qui ne savent ce qu’est une
pile: regarder le mode d’emploi de votre HP, car si vous
utilisez le mode RPN, vous utilisez une pile.
|
|
|
Type du regitre: Registre d’entrée
|
|
|
Nb: 1
|
Nom: IN
|
Taille: 4 quartets (16 bits)
|
Usage et specificitées:
Ce registre est dédié aux operations
d’entrées du systeme. Il nous servira à
tester les touches du clavier
|
|
|
Type du regitre: Registre de sortie
|
|
|
Nb: 1
|
Nom: OUT
|
Taille: 3 quartets (12 bits)
|
Usage et specificitées:
Ce registre est dédié aux operations
de sortie du systeme. Il nous servira aussi à tester
les touches du clavier.
|
|
|
2)
Les champs des registres de
travail et de sauvegarde
Les
registres de travail (A,B, C, D) et de sauvegarde (R0, R1, R2,
R3, R4) sont subdivisés en champs. L’interet de cette
division est qu’il n’est aps toujours necessaire d’operer sur
la totalitée d’un registre. Ce serait comme utiliser
un Avion Cargo pour démenager une petite table IKEA.
Avec un champ, on limite le calcul qu’à une partie du
registre.
Voici la
liste et les caracteristiques des differents champs:
Champ
|
Capacitée du champ
|
Quartets concernés
|
W (Word)
|
16 quartets (64 bits)
|
N° 0 à 15 (tous)
|
S (mantissa Sign)
|
1 quartet (4 bits)
|
N° 15
|
M (Mantissa)
|
12 quartets (48 bits)
|
N° 3 à 14
|
X (eXponent)
|
3 quartets (12 bits)
|
N° 0 à 2
|
XS (eXponent Sign)
|
1 quartet (4 bits)
|
N° 2
|
B (Bytes)
|
2 quartets (8 bits)
|
N° 0 à 1
|
A (Adress)
|
5 quartets (20 bits)
|
N° 0 à 4
|

Alors le
champ B du registre A contient: EF
Alors le
champ W du registre A contient: BCDEF
Alors le
champ P du registre A contient: 9
Alors le
champ WP du registre A contient: 9ABCDEF
Avec cet
exemple, vous avez du bien comprendre les champs.
3)
Les drapeaux du Saturn
Un
drapeau est un bit spécial. On dit qu"il est armé
quand il vaut 1 et désarmé quand il vaut 0. Pour
faire vendeur de la Fnac qui fait semblant de s’y connaitre
vachement: vous pouvez appeller ces drapeaux flags (c’est
de l’Americain qui veut dire drapeau ?!). En tous cas,
sachez que ces flags n’ont rien à voir avec les drapeaux
utilisateurs du RPN.
On distingue
plusieurs sortes de drapeaux:
• Le bit
CARRY:
On l’a
un peu abordé dans l’Episode I. Son role consiste a signaler
les retenues par dépassement de capacité (Overflow
nous dirait un vendeur de la Fnac).
Il sert
aussi de resultat de tests logiques (genre: est ce que A=B ?).
• Le
registre des "Status Bits": ST
C’est un
registre qui contient 16 drapeaux. Les 12 premiers drapeaux
(0 à 11) sont destinés au programmeur. Il peur
les armés comme bon lui semble. Les drapeaux 12 à
15 servent à configurer le Saturn. Il est déconseillé
d’y toucher.
A titre
de reference pour l’avenir :
bit 12:
Mode basse tension de la HP
bit 13:
Armé si une une interruption se produit
bit 14:
Armé si une interruption est en suspens
bit 15:
Armé il autorise les interruptions. Sinon il les interdits
• Les
registres des "Hardware Status Bits": HS
Il est
constituté de 4 bits qui sont armés par des événements
dit materiel.
A titre
de reference pour l’avenir :
bit 0:
XM (eXternal Module missing) peu utilisé
bit 1:
SB (Sticky Bit) sert dans le cas de rotation de bits (à
voir plus tard)
bit 2:
SR (Service Request) propre au fonctionnement du Saturn, non
utilisé
bit 3:
MP (Module Pulled) " "
4)
Ca ressemble à quoi tout ça ?
Ce
dernier point resume en partie ce que nous avons dit. Ce schema
sert juste à montrer l’organisation et les liens entre
les differents registres. Il n’est pas fondamental de le connaitre
par coeur.

En
guise de conclusion:
Vous
n’avez encore rien compris ? Je me suis peut-etre mal exprimé,
alors n’hesitez pas à me contacter au 06-88-27-90-91
depuis la France ou à viallesoft@chez.com. Si
vous ne comprenez vraiment rien, ne vous inquietez pas. Nous
avons poser des bases sur le Saturn qui ne peuvent etre bien
assimiller que si vous connaissez les commandes du Saturn, c’est
à dire leur interet. Et réciproquement les commandes
du Saturn ne peuvent etre bien comprises sans ces bases sur
le Saturn. Dans l’Episode III, nous retouverons justement les
commandes du Saturn. Il sera peut-etre disponible avant le 7
juillet, amsi je pense plutot fin aout sur l’un des sites suivants:
VialleSOFT.fr.st ou HP49G.net
Alors à
bientot pour: L’Episode III
Le
Retour Du Saturn
Derniers
ajouts: le 26 juin 2000
VialleSOFT
VialleSOFT
Downloader
la doc
Retour
au sommaire Programmation
HOME
|