J'essaie de comprendre ce examble au sujet des instructions LDM et STM, mais j'ai un problème avec le résultat final, voici l'exemple:ARM STM/instructions LDM d'émission
PRE
r0 = 0x00009000
r1 = 0x00000009
r2 = 0x00000008
r3 = 0x00000007
STMIB r0!, {r1 - r3}
MOV r1, #1
MOV r2, #2
MOV r3, #3
PRE(2)
r0 = 0x0000900C
r1 = 0x00000001
r2 = 0x00000002
r3 = 0x00000003
LDMDA r0!, {r1 - r3}
POST
r0 = 0x00009000
r1 = 0x00000009
r2 = 0x00000008
r3 = 0x00000007
Je le faire et j'obtenir que:
r0 = 0x00009000
r1 = 0x00000007
r2 = 0x00000008
r3 = 0x00000009
Je ne sais pas où je me trompe, la seule possibilité que je peux penser est sur le point que l'instruction STM commence dans R3 et non à R1
Les registres sont toujours transférés dans l'ordre numérique des adresses faibles à élevées. – Jester
@Jester Merci! Donc le '{r1 - r3}' ne spécifie aucun ordre? Suivez simplement l'ordre numérique des adresses? – Hector
Oui. Notez également que c'est plus facile si vous pensez à ces opérations lorsque les opérations de pile sont lancées (tant que les modes correspondants sont utilisés). Le 'stmib/ldmda' implémente une pile" full ascending ", donc ils sont alias à' stmfa/ldmfa'. Voir aussi [Implémentation de pile avec LDM et STM] (http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0801e/dom1359731152499.html) – Jester