2. Charger un registre depuis la mémoire¶
2.1. Conventions du document¶
Notation : Rt, Rn désignent les registres ARM R0-R7 sauf indication contraire. immN représente une valeur immédiate d’une largeur de N bits, d’où imm5 est contraint à la plage 0-31. [Rn + immN] est le contenu de l’adresse mémoire obtenue en additionnant Rn et le décalage immN. Les décalages sont mesurés en octets. Ces instructions affectent les drapeaux de condition.
2.2. Chargement de registre¶
ldr(Rt, [Rn, imm7])
Rt = [Rn + imm7]Charge un mot de 32 bitsldrb(Rt, [Rn, imm5])
Rt = [Rn + imm5]Charge un octetldrh(Rt, [Rn, imm6])
Rt = [Rn + imm6]Charge un demi-mot de 16 bits
Lorsqu’un octet ou un demi-mot est chargé, il est étendu par des zéros à 32 bits.
Les décalages immédiats spécifiés sont mesurés en octets. Ainsi, dans le cas de ldr, la valeur de 7 bits permet d’accéder à des valeurs alignées sur des mots de 32 bits avec un décalage maximal de 31 mots. Dans le cas de ldrh, la valeur de 6 bits permet d’accéder à des valeurs alignées sur des demi-mots de 16 bits avec un décalage maximal de 31 demi-mots.