Dalfab
Messages postés703Date d'inscriptiondimanche 7 février 2016StatutMembreDernière intervention 1 mars 202311 19 janv. 2022 à 19:51
Bonjour,
Tu ne précises pas quel assembleur tu utilises, la réponse peut en dépendre.
Pour la plupart des processeurs, cette instruction revient à faire "nop". Elle n'a donc aucun effet, elle pourrait servir à insérer du code non actif qui permet à l'instruction suivante d'être alignée à une adresse multiple d'une page de cache par exemple.
Sur d'autres processeurs, elle serait peut-être équivalente à "Cmp R24,#0" ou "tst R24". Elle sert alors à mettre à jour les flags.
Comme exemple, on peut prendre le cas de l'ARM, il a les 2 cas : "Mov R24,R24" qui est un "nop" et "Movs R24,R24" qui est un "Cmp R24,0".
AbeBar27
Messages postés28Date d'inscriptionmardi 14 septembre 2021StatutMembreDernière intervention18 décembre 20228 20 janv. 2022 à 13:25
Je confirme la réponse de Dalfab.
Sur un processeur Intel, cette instruction ne modifie pas les flags, elle ne peut servit qu'à retarder le code ou en décaler l'adresse. Encore que dans ce deuxième cas, une instruction NOP multi-byte serait sans doute plus appropriée si la version du processeur le permet.
Sur un processeur type PIC18, cette instruction movf variable,f affecte les flags Z et N elle est utilisée pour tester si variable est nulle.