Connectez-vous pour obtenir votre relevé et valider vos réponses.
Jour 14 : Masque Mémoire
Après avoir voyagé à bord du bus, tu te rends compte que ton ordinateur portable ne parvient plus à synchroniser ses données avec le serveur de l'école.
Le protocole de communication utilise un bus de données muni d'un masque binaire de 24 bits. Ton relevé d'entrée contient la séquence d'instructions transmise par le système.
Deux types d'instructions se succèdent :
mask = ...: définit le nouveau masque binaire en cours (une chaîne de 24 caractères composée de0,1etX).mem[adresse] = valeur: demande l'écriture d'une valeur à une adresse mémoire donnée.
Partie 1
Dans cette première version du protocole, le masque s'applique à la valeur avant son écriture dans la mémoire :
- Si un bit du masque vaut
1, le bit correspondant de la valeur est forcé à 1. - Si un bit du masque vaut
0, le bit correspondant de la valeur est forcé à 0. - Si un bit du masque vaut
X, le bit correspondant de la valeur reste inchangé.
Exemple
Considère ce petit extrait de programme :
mask = XXXXXXXXXXXXXXXXX1XXXX0X
mem[8] = 11
mem[7] = 101
mem[8] = 0Déroulement :
- Pour
mem[8] = 11: 11 en binaire est1011. Avec le masque, le bit à la position 6 passe à 1 et le bit à la position 1 passe à 0, produisant la valeur 73 écrite à l'adresse 8. - Pour
mem[7] = 101: 101 devient 101 écrit à l'adresse 7. - Pour
mem[8] = 0: 0 devient 64, écrasant la valeur précédente à l'adresse 8.
À la fin de cet exemple, la somme de toutes les valeurs présentes en mémoire vaut 101 + 64 = 165.
Exécute le programme complet de ton relevé. Quelle est la somme de toutes les valeurs restant en mémoire à la fin du programme ?