2009-12-09 3 views

Répondre

14

MOV r0, r0 est traditionnellement utilisé dans le code ARM, qui a l'opcode 0xe1a00000; MOV r8, r8 est utilisé dans le code POUCE (opcode 0x46c0)

+0

-t-il pas avoir des effets secondaires sur l'architecture? –

+0

@Stefan, je ne pense pas. Ce sont les instructions machine que mon assembleur génère lorsque je mets une instruction 'nop' dans le fichier source. –

+0

Apparemment Thumb2 a une instruction NOP. Voir page 5 de http://infocenter.arm.com/help/topic/com.arm.doc.qrc0001l/QRC0001_UAL.pdf – MArag

10

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

0xbf00 2 byte thumb2 form 
0xf3af8000 4 byte thumb2 form 
0x*320f000 4 byte arm form 

Lorsque vous ciblez les versions antérieures de l'architecture, assembleurs traduit NOP dans le MOV les instructions moonshadow listées.

Vous ne devriez pas avoir besoin d'utiliser les opcodes réels, car les outils de développement comprennent NOP.

5

Je voudrais ajouter que NOP non-conditionnel pour armv7 est 0xE320F000.

Notez que si vous allez patcher un fichier, vous devez écrire octets dans l'ordre inverse (little endian) - 00 20 E3 F0

Questions connexes