En traitant les instructions de la même façon que les données, un ordinateur à programme stocké en mémoire peut facilement modifier les instructions. Une motivation importante pour une telle facilité était le besoin pour un programme d’incrémenter ou modifier le champ adresse des instructions (pour faire des boucles par exemple). Cette motivation est devenue moins importante en même temps que l’utilisation de registres d’index et de l’adressage indirect devenait une caractéristique standard des processeurs.
L’architecture actuelle des ordinateurs rend inutile la modification à faible échelle des instructions du programme — son « code » — car cela rendrait inefficace les techniques de gestion de l’antémémoire et du pipeline dans le processeur. Cette pratique est donc à ce jour dépréciée. Bien sûr, à une plus large échelle, la possibilité de traiter des instructions comme étant des données est ce qui permet l’écriture de compilateurs. C’est aussi une caractéristique qui peut être exploitée par les virus lorsqu’ils ajoutent une copie d’eux-mêmes dans le code de programmes existants. Le problème de la réplication de code non autorisée peut être contourné par l’utilisation d’un système de protection de la mémoire et, en particulier, par le gestionnaire de la mémoire virtuelle.