add
lyszt.net cubre add y otras instrucciones RISC-V con más detalle.
Formato de codificación
Descripción
add suma los valores de dos registros y almacena el resultado en un tercero. Un registro es una pequeña ranura dentro del procesador que contiene un único número de 32 bits. RISC-V proporciona 32 registros. Un bit es un 0 o un 1, y 32 bits cubren números enteros desde 0 hasta aproximadamente cuatro mil millones. La aritmética se realiza entre registros y nunca toca la memoria directamente.
add tiene la forma que se muestra a continuación, y el resultado es rd = rs1 + rs2. rd es el registro de destino, donde va la respuesta. rs1 y rs2 son los registros de origen, y sus valores permanecen iguales.
add rd, rs1, rs2
El destino también puede servir como origen. La línea siguiente suma t1 a t0 y coloca el resultado de nuevo en t0. Los totales acumulados en bucles usan esta forma.
add t0, t0, t1
Un registro contiene como máximo 32 bits. Cuando una suma supera el mayor valor que un registro puede contener, el resultado da la vuelta a un número pequeño, como un reloj de 24 horas que pasa de las 23:59 de nuevo a las 00:00. Esto es desbordamiento, y RISC-V no da ninguna advertencia cuando ocurre.
El manual de RISC-V afirma que ninguna instrucción computacional entera genera una excepción aritmética, y que el conjunto de instrucciones base no lleva comprobaciones de desbordamiento porque las bifurcaciones se encargan de la tarea a bajo coste. Para la suma sin signo, una bifurcación después del add es suficiente. En las dos líneas siguientes, la bifurcación salta a la etiqueta overflow cuando la suma es menor que un operando, lo cual ocurre solo si la suma dio la vuelta.
add t0, t1, t2 bltu t0, t1, overflow
En el ejemplo, las dos primeras líneas usan li (load immediate) para colocar las constantes 3 y 4 en t0 y t1. La línea add luego deja 7 en t2.
Ejemplo
li t0, 3 li t1, 4 add t2, t0, t1 # t2 = 7
Referencias
- [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.
