Changes between Version 43 and Version 44 of Doc-MIPS-Archi-Asm-kernel


Ignore:
Timestamp:
Nov 13, 2020, 3:23:55 PM (4 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Doc-MIPS-Archi-Asm-kernel

    v43 v44  
    129129</tr>
    130130</table>
    131 }}}
    132 
    133 {{{#!html
    134 <div align=center><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INS 16</div>
    135 <table border="1" cellspacing="0" cellpadding="0" align=center>
     131<br><br>
     132<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INS 16
     133<table border="1" cellspacing="0" cellpadding="0">
    136134<th>
    137135<b>INS 20
     
    151149<tr></table>
    152150}}}
    153  Par exemple:\\ `mtc0 $4, $14`l'instruction MTC0 a un OPCOD à "010000",<br>le bit IN20 est à "0" et le bit INS16 est à "0".
    154 
    155 
    156 
     151
     152 **Par exemple:**\\
     153 — `mtc0 $5, $14` l'instruction `MTC0` a un OPCOD à `010000"`, le bit INS 25 est à `0` et le bit `INS 16` est à `0`.\\
     154 — `mtc0 $5, $14` = `0b``010000`|`00100`|`00101`|`01101`|`00000`|`000000` \\
     155 — `mtc0 $5, $14` = `0b``0100 0000 1000 0101 0111 0000 0000 0000`\\
     156 — `mtc0 $5, $14` = `0x``40857000`
     157
     158
     159Pour les inste
    157160
    158161 || **instruction**  || ||  **comportement** || || **commentaire** ||
    159162 ||**mtc0 RT, RD**   || ||`C0_RD` ← `RT`   || ||Recopie le contenu du registre GPR n°**RT**\\dans le registre du coprocesseur 0 n°**RD** ||
    160163 ||**mfc0 RT, RD**   || ||`RT` ← `C0_RD`   || ||Recopie le contenu du registre du coprocesseur 0 n°**RD**\\dans le registre GPR n°**RT**||
    161  ||**eret**          || ||`PC` ← `C0_EPC`\\`C0_SR.EXL` ← `0` || || ||
    162  
    163 L’opérande immédiat 16 bits est signé pour les opérations arithmétiques et non signé pour les opérations logiques.
    164 
    165 Le déplacement est de 16 bits pour les instructions de branchement conditionnelles (Bxxx) et de 26 bits pour les instructions de saut inconditionnelles (Jxxx). De plus les instructions JAL, JALR, BGEZAL, et BLTZAL sauvegardent une adresse de retour dans le registre `$31`. Ces instructions sont utilisées pour les appels de sous-programme.
    166 
    167 Toutes les instructions de branchement conditionnel sont relatives au PC (compteur ordinal) pour que le code soit translatable (déplaçable ailleur en mémoire), c'est-à-dire que l'adresse de branchement est le résultat de l'addition entre la valeur du compteur ordinal et un déplacement signé.
    168 
    169 Les instructions `mtc0` (''move to c0'') et `mfc0` (''move from c0'') permettent de transférer le contenu des registres `c0_sr`, `c0_cause`, `c0_epc` etc. vers un registre général GPR et inversement. Ces 2 instructions ne peuvent être exécutées qu’en mode système, de même que l'instruction `eret` qui permet de restaurer l'état antérieur du registre d'état `c0_sr` avant de sortir du gestionnaire d'exceptions.
    170 
    171 
    172 
    173164
    174165== E) EXCEPTIONS / INTERRUPTIONS / APPELS SYSTÈME