Changes between Version 181 and Version 182 of Archi-1-TP9


Ignore:
Timestamp:
Jan 14, 2022, 6:11:38 PM (3 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Archi-1-TP9

    v181 v182  
    531531**Questions**
    532532
    533 1. Le code du driver du TTY est dans le fichier `harch.c` et les prototypes sont dans `harch.h`. Si vous ouvrez `harch.h` vous allez voir que seuls les prototypes des fonctions `tty_gets()` et `tty_puts()` sont présents. La structure décrivant la carte des registres du `TTY` est déclarée dans le `.c`. Pourquoi avoir fait ainsi ?
     5331. Les fonctions du driver de TTY ont pour prototype:
     534{{{#!c
     535/**
     536 * \brief     read any char from the tty until count is reached
     537 * \param     tty   tty number (between 0 and NTTYS-1)
     538 * \param     buf   buffer where the read char are put
     539 * \param     count number of char read must be lower or equal to buf size
     540 * \return    the number of read chars 
     541 */
     542int tty_read (int tty, char *buf, unsigned count);
     543
     544/**
     545 * \brief     write count chars of the buffer to the tty
     546 * \param     tty   tty number (between 0 and NTTYS-1)
     547 * \param     buf   buffer pointer
     548 * \return    the number of written char
     549 */
     550int tty_write (int tty, char *buf, unsigned count);
     551 
     552}}}
     553 Elles sont dans `harch.h` et le code est dans le fichier `harch.c`. Dans `harch.h`, il n'y a pas La structure décrivant la carte des registres du `TTY`, laquelle est déclarée dans le `.c`. Pourquoi avoir fait ainsi ?
    534554{{{#!protected ------------------------------------------------------------------------------------
    535555''
     
    537557''
    538558}}}
    539 1. Le MIPS dispose d'un compteur de cycles internes. Ce compteur est dans un banc de registres accessibles uniquement quand le processeur fonctionne en mode `kernel`. Nous verrons ça au prochain cours, mais en attendant nous allons quand même exploiter ce compteur. Pourquoi avoir mis la fonction dans `hcpua.S` ? Rappeler, pourquoi avoir mis `.globl clock`
     5591. Le MIPS dispose d'un compteur de cycles internes. Ce compteur est dans un banc de registres accessibles uniquement quand le processeur fonctionne en mode `kernel`. Nous verrons ça au prochain cours, mais en attendant nous allons quand même exploiter ce compteur dans une fonction `unsigned clock(void)` dont le code est dans `hcpua.S`. Pourquoi avoir mis la fonction dans `hcpua.S` ? Rappeler, pourquoi avoir mis `.globl clock`
    540560{{{#!protected ------------------------------------------------------------------------------------
    541561''
     
    553573**Exercices**
    554574
     575- les fonction `tty_read()` et `tty_write()` n'offrent pas un service suffisant, alors nous avons ajouté les fonctions `tty_getc()`, `tty_gets()` et `tty_puts()` qui permettent respectivement de lire un caractère sur un TTY, de lire une chaîne de caractères ou d'écrire une chaîne de caractères. Ces fonctions seront déplacées dans un autre fichier plus tard, mais pour le moment, elles sont dans le fichier `kinit.c`.
    555576- Afin de vous ''détendre un peu'', vous allez créer un petit jeu `guess`
    556577  - `guess` tire un nombre entre '0' et '9' et vous devez le deviner en faisant des propositions.\\`guess` vous dit si c'est trop grand ou trop petit. Ce programme ne va révolutionner votre vie de programmeur(se), mais bon, c'est probablement le premier programme que vous allez écrire et faire tourner sur une machine sans système d'exploitation.
     
    578599char end[] = "\nend!\n";
    579600
     601[... code de tty_getc(), tty_gets(), tty_puts ...]
     602
    580603void kinit (void)
    581604{