Changes between Version 181 and Version 182 of Archi-1-TP9
- Timestamp:
- Jan 14, 2022, 6:11:38 PM (3 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Archi-1-TP9
v181 v182 531 531 **Questions** 532 532 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 ? 533 1. 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 */ 542 int 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 */ 550 int 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 ? 534 554 {{{#!protected ------------------------------------------------------------------------------------ 535 555 '' … … 537 557 '' 538 558 }}} 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`559 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 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` 540 560 {{{#!protected ------------------------------------------------------------------------------------ 541 561 '' … … 553 573 **Exercices** 554 574 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`. 555 576 - Afin de vous ''détendre un peu'', vous allez créer un petit jeu `guess` 556 577 - `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. … … 578 599 char end[] = "\nend!\n"; 579 600 601 [... code de tty_getc(), tty_gets(), tty_puts ...] 602 580 603 void kinit (void) 581 604 {