10
votes

Comment créer une instruction NOP pour les binaires de l'armateur iPhone?

L'opcode NOP pour x86 / x86_64 est 0x90, mais qui est l'analogique sur l'iPhone avec l'instruction de bras?


3 Réponses :


14
votes

MOV R0, R0 est traditionnellement utilisé dans le code de bras, qui a l'opcode 0xE1A00000; MOV R8, R8 est utilisé dans le code du pouce (opcode 0x46C0)


3 commentaires

Cela n'a-t-il pas eu d'effets secondaires sur l'architecture?


@Stefan, je ne pense pas. Ce sont les instructions de la machine que mon assembleur génère lorsque je mettez une instruction «NOP» dans le fichier source.


Apparemment, le Thumb2 a une instruction NOP. Voir page 5 de infocenter.arm.com/help/ Topic / com.arm.doc.qrc0001l / ...



11
votes

armv7 a une instruction NOP réelle, avec les codages suivants: xxx

Lorsque vous ciblez des versions antérieures de l'architecture, les assembleurs traduisent nop dans les instructions de MOV que Moonshadow répertoriés.

Vous ne devez pas utiliser les opérations réelles, car les outils de développement comprennent nop .


0 commentaires

7
votes

Je voudrais ajouter que NOP non conditionnel pour ARMV7 est 0xE320f000.

Notez que si vous allez corriger un fichier, vous devrez écrire des octets dans l'ordre inverse (Petit Endian) - 00 F0 20 E3


0 commentaires