Accueil🇫🇷Chercher

Code automodifiable

Un code automodifiable est, en programmation informatique, un programme qui peut se modifier lui-même, c’est-à-dire appeler des routines, fonctions ou méthodes qui seront créées par le programme lui-même.

Utilisation de code automodifiable

En dehors de l'idée, qui relève pour le moment de la fiction, d'un robot qui modifierait lui-même sa finalité, l'utilisation la plus courante du code automodifiable est l'optimisation de la vitesse d'exécution d'un programme : par exemple un interpréteur peut analyser le code source qu'il est en train d'exécuter, se rendre compte qu'une fonction est appelée fréquemment, et en réaliser à la volée une version compilée, qui sera exécutée plus rapidement. C'est ce que l'on appelle la compilation à la volée (just in time compilation), qui est utilisée par exemple par la plupart des machines virtuelles pour le langage java.

Certaines de ces techniques sont utilisées comme protection anticopie des jeux vidéo, en effet il est alors pratiquement impossible de comprendre le code sans l'exécuter pas à pas.

Techniques d'Ă©criture de code automodifiable

Écrire du code automodifiable n'est pas facile, avec certains langages compilĂ©s c'est mĂŞme impossible ou presque impossible. Par exemple en C, l'idĂ©e intuitive serait de crĂ©er un tableau d'octets qui reprĂ©sentent le code binaire d'une fonction, puis de crĂ©er un pointeur de fonction, et de lui affecter (avec un « cast Â») l'adresse du tableau. Ensuite un appel du pointeur de fonction suffit Ă  exĂ©cuter la nouvelle routine. Cela fonctionne en mode rĂ©el, mais la plupart des systèmes d'exploitation modernes ne le permettent pas : les donnĂ©es et les programmes rĂ©sident dans des espaces sĂ©parĂ©s et l'exĂ©cution d'instructions se trouvant dans le segment des donnĂ©es est bloquĂ©e.

Dans un langage de script, où les programmes sont des textes, il est bien plus facile d'écrire du code automodifiable. D'une manière générale, c'est plus simple avec un langage interprété (comme BASIC, PHP ou Lisp). Avec un langage compilé, écrire du code automodifiable nécessite généralement de définir une machine virtuelle et un interpréteur pour cette machine virtuelle.

Notes et références

    Voir aussi

    Articles connexes

    Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.