Connectez-vous pour obtenir votre relevé et valider vos réponses.

Jour 08 : Séquence de Boot

C'est la panique au cluster : les iMacs n'arrivent plus à démarrer ! L'écran affiche une pomme pendant quelques secondes avant de s'éteindre et de recommencer indéfiniment.

Tu branches ton ordinateur portable en série sur l'un des Mac et tu parviens à extraire la séquence de boot (ton relevé d'entrée). Le code est écrit dans une sorte d'assembleur qui rappelle vaguement Corewar.

Le processeur exécute une instruction par ligne. Il en existe trois types :

Partie 1

Le problème saute aux yeux : le programme tourne dans une boucle infinie. Il n'atteint jamais la fin du fichier et se contente de réexécuter en boucle la même séquence d'instructions.

Exemple

Considère ce petit programme de test :

nop +0
acc +1
jmp +4
acc +3
jmp -3
acc -99
acc +1
jmp -4
acc +6

Voici comment il s'exécute, instruction par instruction :

Juste avant que le programme ne réexécute la ligne 2 pour la seconde fois, l'accumulateur valait 5.

Lance ton propre fichier de boot dans un simulateur. Quelle est la valeur de l'accumulateur juste avant qu'une instruction ne soit exécutée pour la deuxième fois ?