J'ai enfin trouvé d'où venait mon problème : l'architecture de Harvard utilisé par Arm (contrairement à Intel qui utilise du Von Neumann).
Dans notre cas on s'intéresse surtout à la gestion du cache, avec l'architecture de Harvard, nous en avons deux distinct, l'un pour les datas l'autre pour les instructions.
Ainsi en faisant du code auto-modifié, certaines données sont considéré comme des datas et ne sont pas mise à jour. Il est possible de forcer cette mise à jour grâce à un appel de la fonction (gcc) suivante :
Code : Tout sélectionner
void __clear_cache(char* beg, char* end);
[^] # Re: complément d'informations
Posté par manticore . En réponse au message Fonctionnement interpreteur linux. Évalué à 1.
J'ai enfin trouvé d'où venait mon problème : l'architecture de Harvard utilisé par Arm (contrairement à Intel qui utilise du Von Neumann).
Dans notre cas on s'intéresse surtout à la gestion du cache, avec l'architecture de Harvard, nous en avons deux distinct, l'un pour les datas l'autre pour les instructions.
Ainsi en faisant du code auto-modifié, certaines données sont considéré comme des datas et ne sont pas mise à jour. Il est possible de forcer cette mise à jour grâce à un appel de la fonction (gcc) suivante :
Code : Tout sélectionner
void __clear_cache(char* beg, char* end);