Instruction MOV

AD54 - 18 janv. 2022 à 11:40
AbeBar27 Messages postés 28 Date d'inscription mardi 14 septembre 2021 Statut Membre Dernière intervention 18 décembre 2022 - 20 janv. 2022 à 13:25
Bonjour,
svp j´aimerais savoir le but de faire un Mov d´une valeur sur un meme registre
genre
"Mov R24,R24"

j´ai eu ce cas dans un devoir mais a vrai dire je comprend pas trop l´objectif

2 réponses

Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 11
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".
0
AbeBar27 Messages postés 28 Date d'inscription mardi 14 septembre 2021 Statut Membre Dernière intervention 18 décembre 2022 8
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.
0
Rejoignez-nous