Adloun

Puisque le programme est rangé en mémoire comme une donnée, un…

Exercice supplémentaire · niveau 3 (difficile) · NSI (première), chapitre 9 — Machines, systèmes et réseaux · Au plus près du matériel

Énoncé

Puisque le programme est rangé en mémoire comme une donnée, un programme peut modifier ses propres instructions pendant qu'il s'exécute.

Corrigé

1. L'instruction CHARGE R2, 30 est, en mémoire, un mot dont une partie code l'adresse . Un programme qui ajoute à ce mot transforme l'instruction en CHARGE R2, 31. En bouclant, il lit successivement , , … : on obtient l'effet de l'adressage indirect en modifiant le code lui-même. C'est ainsi que procédaient réellement les premières machines, et c'est la conséquence la plus directe de l'idée de von Neumann.

2. Deux raisons, de nature différente :

3. Le bit « pas d'exécution » (NX), porté par le matériel de gestion de mémoire : chaque page de mémoire est marquée exécutable ou modifiable, jamais les deux. Le processeur refuse alors d'exécuter ce qui vient d'une zone de données.

La leçon : l'idée fondatrice du modèle — programme et données dans la même mémoire — est aussi sa faiblesse. Soixante-quinze ans plus tard, on la conserve, et on en rétablit la séparation par une protection ajoutée par-dessus.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.