- Qu'est -
rep; nop
moyenne? - Est-il le même que
pause
de l'enseignement? - Est-il le même que
rep nop
(sans le point-virgule)? - Quelle est la différence de la simple
nop
de l'enseignement? - T-il se comporter différemment sur les processeurs AMD et Intel?
- (bonus) Où est la documentation officielle pour ces instructions?
La Motivation pour cette question
Après discussion dans les commentaires d' une autre question, j'ai réalisé que je ne sais pas ce qu' rep; nop;
moyen en x86 (ou x86-64) de l'assemblée. Et aussi, je n'arrivais pas à trouver une bonne explication sur le web.
Je sais qu' rep
est un préfixe qui signifie "répéter l'instruction suivante cx
temps" (ou au moins, il était, dans le vieux-16-bit x86 assemblée). Selon ce tableau récapitulatif sur Wikipedia, il semble rep
peut être utilisé uniquement avec movs
, stos
, cmps
, lods
, scas
(mais peut-être que cette limitation a été supprimée sur les nouveaux processeurs). Donc, je pense que l' rep nop
(sans point-virgule) serait répéter nop
fonctionnement cx
temps.
Cependant, après une recherche plus loin, je suis encore plus confus. Il semble qu' rep; nop
et pause
carte pour exactement les mêmes opcode, et pause
a un peu un comportement différent de juste nop
. Certains anciens messages à partir de 2005 dit des choses différentes:
- "essayez de ne pas brûler trop de pouvoir"
- "c'est l'équivalent de" nop " juste avec 2 codage octet."
- "c'est de la magie sur intel. Ses comme 'nop, mais laisser les autres HT frère run'"
- "c'est la pause sur les processeurs intel et rapide rembourrage sur les Athlon"
Avec ces différents avis, je ne pouvais pas comprendre la signification correcte.
Il est utilisé dans le noyau Linux (à la fois en i386 et x86_64), avec ce commentaire: /* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */
Il est également utilisé dans BeRTOS, avec le même commentaire.