a4ac: e3a02010 mov r2, #16 ; 0x10
a4b0: e1a01002 mov r1, r2
a4b4: e5c31000 strb r1, [r3]
a4b8: e3e03bea mvn r3, #239616 ; 0x3a800
a4bc: e2433f71 sub r3, r3, #452 ; 0x1c4
a4c0: e2433003 sub r3, r3, #3 ; 0x3
a4c4: e3a02008 mov r2, #8 ; 0x8
a4c8: e08b1003 add r1, fp, r3
a4cc: e241300c sub r3, r1, #12 ; 0xc
Moi je le trouve vraiment tres fort ce petit GCC sur l'allocation des registres...
pour ceux qui parlent pas l'ARM:
- on commence par mettre 16 dans le registre R2
- on met R2 dans R1
- on stoque r1 dans l'adresse mémoire pointé par r3
- on fait quelques mumuse avec r3
- on met 8 dans r2
etc...
Hum autre exemple sympa un poil plus bas:
a584: eaffffff b a588 <Function+0x110>
a588: e91ba800 ldmdb fp, {fp, sp, pc}
en gros, saute a l'instruction juste après
Pour les non ARM-iste, b est l'équivalent d'un jmp du 68k, en gros saute a l'adresse, sans rien modifier de tes registres pile & co)
) mais il me semble avoir lu il y a longtemps que ARM étant le mainteneur de la partie ARM de gcc, faisait exprès de garder gcc en retard sur son propre compilateur, je sais pas quel est l'état des choses actuellement, mais ça pourrait expliquer quelques trucs éventuellement.
), ça ne fait que diminuer l'autonomie des appareils fonctionnant sur batterie :/

