J'essaye de comprendre l'encodage pour des JMP inconditionnels sur SPARC, c'est-à-dire le JMP. Après avoir démonté quelques binaires.Quel est le format d'encodage pour les sauts inconditionnels sur SPARC/SPARC64?
Dans mon IDA Démonter le codage pour JMP% g1 est:
81 c0 40 00
Et le codage pour g4 JMP% est:
81 c1 00 00
En fouillant dans les manuels d'allumage, je ne peux pas sembler pour trouver un enregistrement de la façon dont cela est codé. Je suis également confus quant à la raison pour laquelle l'IDA se réfère à un "JMP" par opposition à la "JMPL" dans les docs.
Les recommandations de codage JMPL données dans le manuel de SPARC9 me sont un peu Arcane et je lutte avec ce qu'ils obtiennent à:
10-RD-OP3-RS1-i-[-]-rs2
ou
10-RD-OP3-RS1-i-siMM3
« Si l'un des bas -order deux bits de l'adresse de saut est différent de zéro, une exception de mem_address_not_aligned se produit "
Eh bien, je ne suis pas sûr de savoir comment cela équivaut à L'instruction que l'IDA a trouvée. Est-ce que quelqu'un peut décomposer comment cela correspond à JMP% g1? Comment cela changerait-il pour JMP% g2?
Note: Ceci est un rapport d'échange de pile de reverse engineering, je vais supprimer celui qui obtient une bonne réponse en premier. J'ai eu plus de chance avec ce genre de question sur SO dernièrement.
Les valeurs rs1 successives sont-elles RS1 00010 et ainsi de suite? (édité) – baordog
'00011' est'% g3' ... 'rs2' est l'espace réservé pour l'autre registre. – Jester
^ouais j'ai édité ce que je voulais dire là. Merci de revenir à moi! – baordog