3. Stocker un registre en mémoire

3.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 + imm5] est le contenu de l’adresse mémoire obtenue en additionnant Rn et le décalage imm5. Les décalages sont mesurés en octets. Ces instructions n’affectent pas les drapeaux de condition.

3.2. Stockage de registre

  • str(Rt, [Rn, imm7]) [Rn + imm7] = Rt Stocke un mot de 32 bits

  • strb(Rt, [Rn, imm5]) [Rn + imm5] = Rt Stocke un octet (b0-b7)

  • strh(Rt, [Rn, imm6]) [Rn + imm6] = Rt Stocke un demi-mot de 16 bits (b0-b15)

Les décalages immédiats spécifiés sont mesurés en octets. Ainsi, dans le cas de str, 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 strh, 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.