Changes between Version 62 and Version 63 of Archi-1-TP11
- Timestamp:
- Nov 16, 2024, 4:33:03 PM (3 months ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Archi-1-TP11
v62 v63 32 32 33 33 34 Dans le TP9, vous avez réalisé un petit jeu dans lequel vous deviez deviner un nombre tiré au hasard. Ce jeu avait été mis dans `kinit` parce qu'à ce moment, il n'y avait pas encore d'application utilisateur. Nous vous proposons de mettre le jeu dans l'application user et de limiter le temps pendant lequel vous pouvez jouer. Nous allons vous guider pas-à-pas. 35 36 Récuperez l'[htdocs:files/tp3.tgz archive du code du tp3], placez-là dans le répertoire `kO6` et décompressez-là. Les commandes ci-dessous supposent que vous avez mis l'archive dans le répertoire `kO6` 34 Dans le tp1, vous avez réalisé un petit jeu dans lequel vous deviez deviner un nombre tiré au hasard. Ce jeu avait été mis dans `kinit` parce qu'à ce moment, il n'y avait pas encore d'application utilisateur. Nous vous proposons de mettre le jeu dans l'application user et de limiter le temps pendant lequel vous pouvez jouer. Nous allons vous guider pas-à-pas. 35 36 **Récupération du code du tp3** 37 38 * Ouvrez un `terminal` 39 * Allez dans le répertoire des TPs: **`cd ~/kO6`** \\ 40 ''... ou bien le répertoire que vous avez choisi pour faire les TPs.'' 41 * Copiez les codes du **tp3**:\\ 42 **`cp -rp /Infos/lmd/2024/licence/ue/LU3IN029-2024oct/kO6/tp3 .`** 43 * Exécutez la commande : **`cd tp3 ; tree -L 1`**.\\ 44 Vous devriez obtenir ceci : 37 45 {{{#!bash 38 cd ~/kO6 39 tar xvzf tp3.tgz 40 cd tp3/1_gameover 41 }}} 46 . 47 ├── 1_gameover 48 └── Makefile 49 }}} 50 51 **Allez dans le répertoire `1_gameover`** 42 52 43 53 Le code de l'application est le suivant (dans uapp/main.c) … … 74 84 }}} 75 85 76 1. Essayezle jeu (dans le répertoire `tp3/1_gameover`) : tapez `make exec`\\86 1. Pour essayer le jeu (dans le répertoire `tp3/1_gameover`) : tapez `make exec`\\ 77 87 comme vous pouvez le constater, vous avez le temps de jouer. 78 88 1. Dans la version précédente du gestionnaire de syscall, nous avions masqué les IRQ en écrivant `0` dans le registre `c0_status`(registre $12 du coprocesseur 0). Cela avait pour conséquence de mettre tout à 0, entre autres le bit `IE`. Il faut modifier ça, parce que sinon, lorsque l'utilisateur demandera à lire le clavier avec l'appel système `fgets()`, l'IRQ venant du timer ne sera jamais prise en compte (`TODO1`), ensuite au retour de la fonction qui réalise l'appel système, il faut masquer les IRQ pour ne pas avoir d'interruption pendant la restauration des registres jusqu'au `eret` qui fait sortir du kernel.