2010-04-19 4 views
4

J'étudie le manuel du développeur de logiciel IA-32 d'Intel. En particulier, je lis le manuel suivant: http://www.intel.com/Assets/PDF/manual/253666.pdf. Prenons par exemple l'instruction ADD. À la page 79, il est écrit que vous pouvez ajouter un r8 (registre de 8 bits) à un r/m8 (registre de 8 bits ou emplacement de mémoire). Quelques lignes plus bas, il est aussi écrit que vous pouvez ajouter un r/m8 à un r8. La question est: si j'ajoute deux registres de 8 bits, quelle instruction j'utilise? Merci.Question sur le manuel du développeur de logiciel IA-32 d'Intel

+1

J'ai changé "doute" dans le titre de votre question à "question". Apparemment, il y a des langues qui utilisent le même mot pour les mots anglais "doubt" et "question"; ici sur SO, "question" est presque toujours le mot que vous voulez. –

Répondre

8

L'instruction add a plusieurs versions ... le même mnémonique peut être encodé en différents opcodes, en fonction des opérandes que vous utilisez. (et pour répondre à votre question: le « ajouter r8, r8 » instruction a probablement 2 différents encodages possibles, qui font la même chose)

+0

Similaire aux fonctions surchargées? – IAbstract

+0

pour certaines définitions de "similaires" ...... je suppose que vous pourriez le dire :) – Virgil

1

L'instruction ADD a 9 différents types de codage et deux opcodes sont réservés pour:

Opcode: 00/r = ADD r/m8, r8 
Opcode: 02/r = ADD r8, r/m8 

Dans le cas où "ADD r8, r8" ont tous les deux un effet.

Questions connexes