Changes between Version 52 and Version 53 of AS6-TME-B1
- Timestamp:
- Feb 7, 2024, 12:09:12 PM (16 months ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
AS6-TME-B1
v52 v53 95 95 * L'espace d'adressage de l'application est l'ensemble des adresses que peut utiliser l'application. 96 96 * Ici, c'est la même chose de l'espace d'adressage du MIPS, même si certains segments ne sont utilisable que lorsque le MIPS est en mode kernel. 97 * Dans un SoC plus évolué, l'application pourrait ne pas avoir accès à tout.97 * Vous verrez plus tard (peut-être le savez-vous déjà) que l'application utilise un espace d'adressage virtuel, c'est à dire un certain nombre de segments d'adresses pour son code et ses données. Ces segments sont demandés par l'application au noyau du système d'exploitation. Il faut que le SoC dispose d'un composant (nommé MMU ''Memory Managment Unit'') placé entre le processeur et la mémoire permettant la traduction des adresses virtuelles en adresses physiques. 98 98 ''''''''''''''' 99 99 }}} … … 127 127 ''''''''''''''' 128 128 }}} 129 1. Que représentent les flèches bleues sur le schéma ? Pourquoi ne vont-elles que dans une seule direction ?129 1. Que représentent les flèches bleues sur le schéma (plus haut à gauche) ? Pourquoi ne vont-elles que dans une seule direction ? 130 130 {{{#!protected ------------------------------------------------------------------------------------ 131 131 ''''''''''''''' … … 185 185 ''''''''''''''' 186 186 * 187 - `j label` malgré sa forme assembleur effectue un saut relativement au `PC` puisque le `label` n'est pas entièrement encodé dans l'instruction binaire (cf. cours sur les sauts). Cette instruction réalise : `PC ← (PC & 0xF0000000) | (ZeroExtend(label, 32) << 2)`. Les 4 bits de poids forts du `PC` sont conservés, le saut est bien relatif au PC ( ZeroExtenddésigne ici le fait d'étendre le label sur 32 bits en ajoutant des zéros en tête, à changer s'il y a une meilleure syntaxe).187 - `j label` malgré sa forme assembleur effectue un saut relativement au `PC` puisque le `label` n'est pas entièrement encodé dans l'instruction binaire (cf. cours sur les sauts). Cette instruction réalise : `PC ← (PC & 0xF0000000) | (ZeroExtend(label, 32) << 2)`. Les 4 bits de poids forts du `PC` sont conservés, le saut est bien relatif au PC (`ZeroExtend` désigne ici le fait d'étendre le label sur 32 bits en ajoutant des zéros en tête, à changer s'il y a une meilleure syntaxe). 188 188 - A l'inverse, `jr $r` effectue un saut absolu puisque cette instruction réalise `PC ← $r` 189 189 Autrement dit, si l’on veut aller exécuter du code n'importe où en mémoire, il faut utiliser `jr`.