IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres architectures Assembleur Discussion :

Calculatrice simple et programmable?


Sujet :

Autres architectures Assembleur

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 220
    Points : 100
    Points
    100
    Par défaut Calculatrice simple et programmable?
    Bonjour à tous.

    Pouvez vous me confirmer qu'une calculatrice fonctionne comme ceci:

    Il y a une ROM, dans laquelle se trouve du code pour effectuer les opérations, une RAM avec laquelle les instructions contenue dans la ROM vont pouvoir travailler et, une autre partie de la RAM pour contenir les "instructions" de programmation (pour les calculatrices programmables)?

    Peut on dire que, lorsqu'on appuis sur une touche, il se passe une "interruption" matérielle qui appel le code en ROM?

    Pour les calculatrice programmables, peut on dire, que l'on écrit, dans la RAM, les "interruptions", mais qui cette fois ci, sont des interruptions logicielles?

    D'avance merci.

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Bonjour,

    Ça dépend de ce que tu entends par « calculatrice ». Les calculatrices quatre opérations rudimentaires et ainsi que les anciens modèles (années 80 et début 90) étaient des machines conçues directement à cet effet. Les calculatrices plus sophistiquées et notamment celles qui sont à la mode dans les lycées, telles que les TI ou les Casio de l'époque, ainsi que les fameuses HP, sont en pratique des ordinateurs. Aujourd'hui, les micro-processeurs tous usages sont tellement répandus et abordable qu'il est beaucoup plus simple de les utiliser d'emblée même si c'est pour afficher « Bonjour » à l'écran ou faire clignoter une LED.

    À ce titre, elles fonctionnent exactement comme le PC qui est posé sur ton bureau, mais c'est de la même façon qu'un A380 et un petit mono-moteur obéissent aux mêmes lois générales, ce qui en fait tous deux des avions. Le principe général de fonctionnement est le même.

    De là, tu peux considérer tes assertions comme correctes. Malgré tout :

    Il y a une ROM, dans laquelle se trouve du code pour effectuer les opérations, une RAM avec laquelle les instructions contenue dans la ROM vont pouvoir travailler et, une autre partie de la RAM pour contenir les "instructions" de programmation (pour les calculatrices programmables)?
    Oui, sachant que ta calculatrice embarque un langage de programmation interprété. C'est-à-dire que le programme que tu vas y déposer ne va pas être directement exécuté par la calculatrice mais par son logiciel qui, lui, va analyser les instructions et agir en conséquence.

    Peut on dire que, lorsqu'on appuis sur une touche, il se passe une "interruption" matérielle qui appel le code en ROM?
    Ce n'est pas obligatoire, mais c'est très probable.

    Pour les calculatrice programmables, peut on dire, que l'on écrit, dans la RAM, les "interruptions", mais qui cette fois ci, sont des interruptions logicielles?
    Non. Ça, en revanche, ça n'a rien à voir.

    Il y a une confusion courante entre les interruptions logicielles et les appels systèmes parce qu'on se sert souvent des premiers pour effectuer les seconds, mais il s'agit à la base de deux notions très distinctes. C'est une erreur qui est devenue très prononcée depuis D.O.S. mais qui couvre en fait pratiquement toutes les machines.

    Une « interruption » matérielle, « IRQ » en anglais pour Interrupt Request ou « demande d'interruption » se fait en faisant changer d'état une des broches du boîtier du micro-processeur. Lorsque c'est le cas (et si les interruptions n'ont pas été explicitement inhibées), le micro-processeur sauvegarde automatiquement ses registres dans la pile et fait un saut à un sous-programme déterminé à l'avance comme s'il avait été avec « CALL ».

    C'est pratique parce que ça permet au micro-processeur de « se faire prévenir » et d'éviter d'avoir à surveiller en permanence les différents périphériques pour voir s'il y a quelque chose à aller chercher. Typiquement, le clavier va se servir de ce mécanisme pour signaler qu'une touche est enfoncée. Une routine est automatiquement appelée mais celle-ci se contente de lire la touche concernée et de déposer le caractère correspondant dans un buffer avant de ressortir. Le programme principal reprend alors son cours là où il a été interrompu de façon complètement transparente. Par la suite, un programme qui a besoin de lire le clavier va en fait puiser ce dont il a besoin dans ce buffer.

    Une « interruption logicielle » maintenant, c'est une instruction dédiée du micro-processeur qui permet sur demande de mettre celui-ci dans le même état que s'il avait reçu une interruption matérielle. A priori, on pourrait penser que c'est une fonctionnalité anecdotique rarement utilisée dans les programmes ordinaires. C'était vrai en soi, mais les interruptions logicielles ont trois avantages :

    • Leur code opération est très court ;
    • Par définition, leur point d'entrée est prédéfini (même chose avec les IRQ) ;
    • Elles sauvegardent automatiquement les registres et inhibent les interruptions pour éviter la réentrance (idem) ;


    Et ça, c'est très intéressant parce qu'en programmation système, on passe son temps à faire des appels système. Le fait d'avoir un code qui permet de les appeler directement sans avoir à spécifier le point d'entrée en mémoire comme avec CALL permet de diviser par cinq à la fois le temps d'accès et l'occupation en mémoire. Donc, plus il y en a dans un programme, plus c'est intéressant de disposer de ce genre de raccourci.

    En outre, le fait d'avoir un point d'entrée implicite permet de modifier au besoin tout le système d'exploitation ainsi que son implantation en mémoire tout en préservant la compatibilité avec les programmes écrits pour lui, ce qui permet presque de modifier la plate-forme matérielle (en gros changer de machine), tant que le micro-processeur reste le même.

    Enfin, lorsque les ordinateurs se sophistiquent un peu, le procédé permet de s'adapter élégamment au mode protégé puisque c'est de cette façon qu'on va implémenter les call gates.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 220
    Points : 100
    Points
    100
    Par défaut
    Merci Obsidian pour ces éclairsisements.

    Je pense avoir compris qu'il y a un interpréteur pour les calcul

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 220
    Points : 100
    Points
    100
    Par défaut
    Oups! désolé.

    ...les calculatrices programmables "modernes".

    En fait, j'aurais dû préciser à quel genre de calculatrice je faisais allusion.
    Il s'agit de la HP15C (dont je suis l'heureux propriétaire depuis plus de 25 ans) qui est une calculatrice scientifique programmable avec notation polonaise inverse (RPN).

    Dans le manuel de celle-ci, ils (les concepteur de la calculatrice) emploient le terme de "keystroke programming", C.A.D. que l'on programme exactement de la même manière que si on "exécutait" le calcul à la "main".

    Et c'est pour cela que je demandais si les "instructions" étaient des interruptions logicielles qui correspondaient à des interruption matérielles!

    Pouvez vous me confirmer que, pour ce type de calculatrices, il s'agit bien de ce type de fonctionnement?

    Cordialement.

  5. #5
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Citation Envoyé par flyingman Voir le message
    ...les calculatrices programmables "modernes".

    En fait, j'aurais dû préciser à quel genre de calculatrice je faisais allusion.
    Il s'agit de la HP15C (dont je suis l'heureux propriétaire depuis plus de 25 ans) qui est une calculatrice scientifique programmable avec notation polonaise inverse (RPN).
    Je me doutais que tu devais être de cette génération. :-) J'étais un peu trop jeune pour exploiter une HP-15C mais j'ai eu une belle HP-48GX lorsque j'étais lycéen. Il y a déjà un monde entre les deux.

    Les HP ont toujours été des petits micro-ordinateurs à l'époque où ce n'était pas encore l'usage pour ce genre de produits, ce qui en fait de petits bijoux. Cela dit, la HP-15C disposait, selon la doc, de 448 octets de mémoire utilisable (sensiblement la taille du MBR sur PC). Donc, il y avait de la place pour un « proto-programme » mais rien de plus évolué.

    Dans le manuel de celle-ci, ils (les concepteur de la calculatrice) emploient le terme de "keystroke programming", C.A.D. que l'on programme exactement de la même manière que si on "exécutait" le calcul à la "main".

    Et c'est pour cela que je demandais si les "instructions" étaient des interruptions logicielles qui correspondaient à des interruption matérielles!

    Pouvez vous me confirmer que, pour ce type de calculatrices, il s'agit bien de ce type de fonctionnement?
    Non, ça n'a rien à voir avec les interruptions. Ni logicielles ni matérielles. :-)

    Ce que l'on peut lire dans le manuel de la HP-15C, c'est que les différentes touches de l'appareil permettaient de saisir directement un des codes-opérations proposés par le langage et qui étaient, en eux-mêmes, en nombre assez limité. Dès que suffisamment de codes avaient été saisis, l'opération était automatiquement effectuée.

    Le « keystroke programming » consistait simplement à accumuler en mémoire toutes les frappes de touche jusqu'à un certain stade, puis les rappeler en une fois. L'interpréteur allait donc directement les lire en mémoire et, en gros, ne faisait pas la différence entre un flux de « touches » directement tapé au clavier ou relu depuis la mémoire. Aujourd'hui, c'est ce que l'on appellerait une « macro ».

    Il est difficile de dire, en revanche, si le micro-processeur exécutait réellement un langage interprété ou si l'appareil était si rudimentaire (selon les critères modernes) que les touches inséraient directement les codes opération du micro-processeur lui-même.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 220
    Points : 100
    Points
    100
    Par défaut
    Merci Obsidian

    L'interpréteur allait donc directement les lire en mémoire et, en gros, ne faisait pas la différence entre un flux de « touches » directement tapé au clavier ou relu depuis la mémoire
    Voilà, c'est exactement cela que je voulais savoir!

    Bon ok, je suis un peu perdu avec les interruptions, les appels systèmes les micro codes etc, mais ça viendra avec le temps!

    Encore merci pour tes explications, je vais, justement, réfléchir sur les interruptions!

    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Calculatrice simple- event button
    Par Luggy dans le forum Tkinter
    Réponses: 10
    Dernier message: 16/05/2015, 15h37
  2. program calculatrice simple?
    Par delphino7 dans le forum Débuter
    Réponses: 15
    Dernier message: 15/06/2010, 16h19
  3. Problème calculatrice simple
    Par beber54 dans le forum VBA Access
    Réponses: 8
    Dernier message: 23/10/2008, 18h18
  4. Simple Programme Recreateur De Script
    Par Syntax-ERROR dans le forum C++
    Réponses: 3
    Dernier message: 20/02/2006, 15h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo