sub
lyszt.net cubre sub y otras instrucciones RISC-V con más detalle.
Formato de codificación
Descripción
sub resta el valor de un registro del de otro y escribe el resultado en un tercero. Funciona con registros, es decir, las pequeñas ranuras de almacenamiento numeradas del interior del procesador que contienen cada una un número de 32 bits.
A continuación se muestra la sintaxis de sub; el resultado es rd = rs1 - rs2. rd es el registro de destino, donde se almacena el resultado. rs1 y rs2 son los registros de origen. El orden es importante, y invertirlo es un error habitual entre los principiantes.
sub rd, rs1, rs2
La siguiente línea calcula t0 menos t1. La fuente de la izquierda es el valor del que se resta.
sub t2, t0, t1
No existe una instrucción subi para restar una constante. La instrucción addi admite constantes negativas, por lo que restar un número fijo equivale a sumar su valor negativo. La siguiente línea reduce el valor de t0 en uno.
addi t0, t0, -1
RISC-V cuenta con un registro especial denominado zero que siempre contiene el valor 0. Restar un número de zero invierte su signo, por lo que la siguiente línea asigna el valor negativo de t1 a t0. La instrucción neg es una forma abreviada de hacerlo.
sub t0, zero, t1
El manual de RISC-V define sub como la resta de rs2 de rs1. Se ignora el desbordamiento y solo se escriben en rd los bits inferiores de XLEN del resultado, donde XLEN es el ancho del registro en bits, que en este caso es 32. El manual también indica que el registro x0, al que este simulador denomina zero, está preconfigurado con un valor en el que todos los bits son 0.
En el ejemplo, 10 menos 4 da como resultado 6 en t2. Al intercambiar las dos fuentes se obtiene -6, que el procesador almacena según su propio esquema para números negativos.
Ejemplo
li t0, 10 li t1, 4 sub t2, t0, t1 # t2 = 6
Referencias
- [1]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.
- [2]RISC-V International. The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture. Version 20260120. Section 2.1, Programmers' Model for Base Integer ISA, page 23.
- [3]RISC-V International. The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture. Version 20260120. Section 2.4, Integer Computational Instructions, page 27.
