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 | |
| 159 | Pour les inste |
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 | | |