Le codage deencodage d'instructions x64 et l'octet ModRM
call qword ptr [rax]
call qword ptr [rcx]
est
FF 10
FF 11
Je peux voir où le dernier chiffre (0/1) vient de (le numéro de registre), mais je J'essaie de comprendre d'où vient le deuxième chiffre (1). Selon Architecture AMD64 programmeur Volume 3 Manuel: usage général et instructions du système la page 56,
«/chiffre - Indique que l'octet ModRM spécifie un seul registre ou mémoire (r/m) opérande Le chiffre est spécifié. par le champ d'enregistrement ModRM et est utilisé comme une extension d'instruction-opcode Les valeurs de chiffres valides vont de 0 à 7. "
Le document équivalent Intel dit quelque chose de similaire, et call
via un registre est spécifié à coder comme
FF /2
et ... Je ne sais pas ce que cela signifie, ou comment le 2 dans les spécifications Connects à 1 chiffre élevé dans le résultat final. Y a-t-il une explication différente disponible partout?