Changes between Version 85 and Version 86 of Archi-1-TP10


Ignore:
Timestamp:
Nov 23, 2021, 8:53:16 AM (4 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Archi-1-TP10

    v85 v86  
    1041041. 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?
    105105{{{#!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''
     107Cours 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`)
    108109- Nous avons vu 6
    109    || `cr_sr`     || `$12` || contient essentiellement le mode d'exécution du MIPS et le bit d'autorisation des interruptions
    110    || `cr_cause`  || `$13` || contient la cause d'appel du noyau
    111    || `cr_epc`    || `$14` || contient l'adresse de l'instruction ayant provoqué l'appel du noyau ou l'adresse de l'instruction suivante
    112    || `cr_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    || `cr_count`  || `$9 ` || contient le nombre de cycles depuis le démarrage du MIPS
    114    || `cr_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)
    115116- non, il n'est pas possible de faire des calculs sur ces registres.
    116117- On peut juste les lire et les écrire en utilisant les instructions `mtc0` et `mfc0`