4Close6
squalylOn the 2010-03-04 at 12:04pm
non un word fait 4 octets car c'est une architecture 32 bits. 16 bits ou 2 octets, c'est pour un short.

Folco: c'est caractéristique de ce qu'on appelle une machine RISC load/store. Les opérations favorisent les registres. Dès que tu touches la mémoire principale, il faut des opérations spéciales.

en fait c'est plus sioux que ça. en ARM les instructions font toutes 32 bits exactement et pas moyen d'utiliser 2 mots de 32 bits comme sur le 68k.

LDR se démerde pour encoder en 32 bits :
- un code de condition
- un bit pour savoir si on doit affecter les flags
- d'autres flags
- deux registres parmi 16
- une constante de 8 bits
- et un shift de cette constante

voir
http://simplemachines.it/doc/arm_inst.pdf#13
http://simplemachines.it/doc/arm_inst.pdf#33

donc 'est vraiment 8 bits significatifs mais les valeurs peuvent être en fait bien plus grandes, style 0x42<<5.

Mais là, le compilo il est emmerdé, cpt est potentiellement un relogement ou les 32 bits peuvent changer, donc paf il peut pas utiliser un simple LDR. par contre si l'offset est connu on peut optimiser.