Changes between Version 105 and Version 106 of Archi-1-TP9


Ignore:
Timestamp:
Dec 11, 2020, 11:46:57 AM (4 years ago)
Author:
meunier
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Archi-1-TP9

    v105 v106  
    166166'''''''''''''''
    167167*
    168   - `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.
     168  - `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).
    169169  - A l'inverse, `jr $r` effectue un saut absolu puisque cette instruction réalise `PC ← $r`
    170170 Autrement dit, si l’on veut aller exécuter du code n'importe où en mémoire, il faut utiliser `jr`.