Changes between Version 85 and Version 86 of Archi-1-TP10
- Timestamp:
- Nov 23, 2021, 8:53:16 AM (4 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Archi-1-TP10
v85 v86 104 104 1. Le MIPS propose des registres à usage général (GPR ''General Purpose Register'') pour les calculs ($0 à $31). Le MIPS propose un deuxième banc de registres à l'usage du système d'exploitation, ce sont les registres système (dans le coprocesseur 0).\\Comment sont-ils numérotés? Chaque registre porte un nom correspondant à son usage, quels sont ceux que vous connaissez: donner leur nom, leur numéro et leur rôle? Peut-on faire des calculs avec des registres? Quelles sont les instructions qui permettent de les manipuler? 105 105 {{{#!protected ------------------------------------------------------------------------------------ 106 ''''''''''''''' 107 - Les registres système sont numérotés de $0 à $31, comme les registres GPR, ce qui peut induire une certaine confusion 106 '' 107 Cours 10 / slides 7, 8 et 9 108 - Les registres système sont numérotés de $0 à $31, comme les registres GPR, ce qui peut induire une certaine confusion, parce qu'avec cette syntaxe, si on demande que trouve-t-on dans le registres `$14`? Si on ne précise pas qu'il s'agit du registre `$14` du coprocesseur 0, alors on ne peut pas répondre. C'est pour cette raison qu'il est préférable d'utiliser leur nom (`EPC` ou `c0_epc` pour `$14` par exemple ou alors `c0_$14`) 108 109 - Nous avons vu 6 109 || `c r_sr` || `$12` || contient essentiellement le mode d'exécution du MIPS et le bit d'autorisation des interruptions110 || `c r_cause` || `$13` || contient la cause d'appel du noyau111 || `c r_epc` || `$14` || contient l'adresse de l'instruction ayant provoqué l'appel du noyau ou l'adresse de l'instruction suivante112 || `c r_bar` || `$8 ` || contient l'adresse mal formée si la cause est une exception due à un accès non aligné (p.ex. lw a une adresse non multiple de 4)113 || `c r_count` || `$9 ` || contient le nombre de cycles depuis le démarrage du MIPS114 || `c r_procid` || `$15` || contient le numéro du processeur (utile pour les architectures multicores)110 || `c0_sr` || `$12` || contient essentiellement le mode d'exécution du MIPS et le bit d'autorisation des interruptions 111 || `c0_cause` || `$13` || contient la cause d'appel du noyau 112 || `c0_epc` || `$14` || contient l'adresse de l'instruction ayant provoqué l'appel du noyau ou l'adresse de l'instruction suivante 113 || `c0_bar` || `$8 ` || contient l'adresse mal formée si la cause est une exception due à un accès non aligné (p.ex. lw a une adresse non multiple de 4) 114 || `c0_count` || `$9 ` || contient le nombre de cycles depuis le démarrage du MIPS 115 || `c0_procid` || `$15` || contient le numéro du processeur (utile pour les architectures multicores) 115 116 - non, il n'est pas possible de faire des calculs sur ces registres. 116 117 - On peut juste les lire et les écrire en utilisant les instructions `mtc0` et `mfc0`