Syntaxe
ADD{S} {cond} {Rd},Rn,operand2
|
ADD{cond} {Rd}, Rn, #imm12
|
Paramètres
Nom |
Description |
S |
Ce paramètre optionnel permet d'indiquer le suffixe. Si ce paramètre est spécifié, les drapeaux de condition sont mise à jour dans le résultat de l'opérande |
cond |
Ce paramètre optionnel permet d'indiquer le code de condition |
Rd |
Ce paramètre permet d'indiquer le registre de destination. |
Rn |
Ce paramètre permet d'indiquer le registre contenant le premier opérande. |
operand2 |
Ce paramètre permet d'indiquer le deuxième opérande flexible. |
#imm12 |
Ce paramètre permet d'indiquer une valeur dans l'intervalle de 0 à 4095. |
Description
Cette instruction permet d'effectuer une addition.
Remarques
- Extension des opérandes : L'instruction ADD (extended register) permet d'ajouter une valeur de registre à une autre valeur de registre ayant
été étendue (sign-extend ou zero-extend). Cette extension peut être appliquée à différents types de données : octets (8 bits), demi-mots (16 bits), mots (32 bits)
ou double-mots (64 bits), selon le champ option de l'encodage.
- Options d'extension : L'opérande provenant de Rm peut être étendu selon plusieurs modes :
Mode |
Description |
Zero-extend |
UXTB (8 bits), UXTH (16 bits), UXTW (32 bits), UXTX (64 bits) |
Sign-extend |
SXTB (8 bits), SXTH (16 bits), SXTW (32 bits), SXTX (64 bits) |
Logical Shift Left (LSL) |
Est aussi une option qui peut être utilisée. |
- Possibilité d'utiliser le SP (Stack Pointer) : L'instruction ADD permet d'utiliser le registre SP (Stack Pointer) comme destination ou comme opérande
source. Cela est utile pour manipuler la pile dans certaines fonctions d'allocations locales ou de gestion des appels de fonctions.
- Encodage binaire spécifique et contraintes : L'encodage impose certaines restrictions, notamment :
- imm3 ne doit pas contenir 101, 110 ou 111, sinon l'instruction est invalide.
- Si Rd ou Rn est SP (11111) et que option est 010 (UXTW), alors LSL est préférable et peut être omis lorsque imm3 = 000.
- Pour la version 64 bits, LSL est préféré quand SP est utilisé et que option = 011 (UXTX).
- Effet du décalage optionnel : L'extension appliquée à Rm peut être suivie d'un décalage à gauche (LSL) optionnel de 0 à 4 bits. Ce décalage est encodé dans
imm3. Il est obligatoire lorsque LSL est utilisé, mais optionnel avec les autres types d'extension.
- Différence entre ADD standard et ADD (extended register) : L'instruction standard ADD ne permet que l'ajout de deux registres ou d'une valeur
immédiate, tandis que ADD (extended register) permet d'appliquer une transformation à l'un des opérandes avant l'addition (extension de signe, extension zéro, ou
décalage). Cela offre plus de flexibilité dans les calculs.
- Impact sur les performances et le pipeline : Cette instruction peut être plus coûteuse en cycles d'exécution que ADD immédiate ou ADD simple, car elle
implique une extension et un décalage avant l'opération d'addition. Cependant, elle évite d'utiliser une instruction supplémentaire pour effectuer une extension préalable,
ce qui optimise l'utilisation des registres.
Dernière mise à jour : Dimanche, le 12 novembre 2017