add
lyszt.net couvre add et d'autres instructions RISC-V plus en détail.
Format d'encodage
Description
add additionne les valeurs de deux registres et stocke le résultat dans un troisième. Un registre est un petit emplacement à l'intérieur du processeur qui contient un seul nombre de 32 bits. RISC-V fournit 32 registres. Un bit vaut 0 ou 1, et 32 bits couvrent les nombres entiers de 0 jusqu'à environ quatre milliards. L'arithmétique se déroule entre registres et ne touche jamais directement la mémoire.
add a la forme ci-dessous, et le résultat est rd = rs1 + rs2. rd est le registre de destination, où va la réponse. rs1 et rs2 sont les registres sources, et leurs valeurs restent inchangées.
add rd, rs1, rs2
La destination peut aussi servir de source. La ligne ci-dessous ajoute t1 à t0 et remet le résultat dans t0. Les cumuls dans les boucles utilisent cette forme.
add t0, t0, t1
Un registre contient au plus 32 bits. Lorsqu'une somme dépasse la plus grande valeur qu'un registre peut contenir, le résultat revient à un petit nombre, comme une horloge de 24 heures passe de 23:59 à 00:00. C'est un débordement, et RISC-V n'émet aucun avertissement lorsqu'il se produit.
Le manuel RISC-V indique qu'aucune instruction de calcul entier ne déclenche d'exception arithmétique, et que le jeu d'instructions de base n'effectue aucun contrôle de débordement car les branchements s'en chargent à faible coût. Pour l'addition non signée, un seul branchement après l'add suffit. Dans les deux lignes ci-dessous, le branchement saute vers l'étiquette overflow lorsque la somme est inférieure à un opérande, ce qui ne se produit que si la somme a débordé.
add t0, t1, t2 bltu t0, t1, overflow
Dans l'exemple, les deux premières lignes utilisent li (load immediate) pour placer les constantes 3 et 4 dans t0 et t1. La ligne add laisse ensuite 7 dans t2.
Exemple
li t0, 3 li t1, 4 add t2, t0, t1 # t2 = 7
Références
- [1]RISC-V International. The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture. Version 20260120. Section 2.4, Integer Computational Instructions, page 27.
- [2]RISC-V International. The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture. Version 20260120. Section 2.4.2, Integer Register-Register Instructions, page 29.
