Changes between Version 52 and Version 53 of AS6-TME-B1


Ignore:
Timestamp:
Feb 7, 2024, 12:09:12 PM (16 months ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AS6-TME-B1

    v52 v53  
    9595* L'espace d'adressage de l'application est l'ensemble des adresses que peut utiliser l'application.
    9696* 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.
    9898'''''''''''''''
    9999}}}
     
    127127'''''''''''''''
    128128}}}
    129 1. Que représentent les flèches bleues sur le schéma ? Pourquoi ne vont-elles que dans une seule direction ?
     1291. Que représentent les flèches bleues sur le schéma (plus haut à gauche) ? Pourquoi ne vont-elles que dans une seule direction ?
    130130{{{#!protected ------------------------------------------------------------------------------------
    131131'''''''''''''''
     
    185185'''''''''''''''
    186186*
    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).
     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).
    188188  - A l'inverse, `jr $r` effectue un saut absolu puisque cette instruction réalise `PC ← $r`
    189189 Autrement dit, si l’on veut aller exécuter du code n'importe où en mémoire, il faut utiliser `jr`.