SansTitre

HP-Arena.com

 
HOME
News
Tests JEUX
Tests +
Programmation
Docs +
Team HP49G
Les Liens
Download
Decouvrez ! HPWorms
The VialleSOFT Network

 

 

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

Ce site n'a absolument rien a voir avec la societe Hewlett-Packard
©2000-2001, HP-Arena.com et ses differents particicipants