snez
pseudolyszt.net cubre snez y otras instrucciones RISC-V con más detalle.
Descripción
snez comprueba si un registro contiene un valor distinto de cero, lo inverso de seqz. El nombre significa establecer si no es igual a cero. Cuando rs no es cero, la forma siguiente escribe 1 en rd, y cuando rs es cero escribe 0.
snez rd, rs
snez es una pseudoinstrucción, como seqz, y el ensamblador la expande a una instrucción real. Esa instrucción pregunta si cero es menor que el valor.
sltu rd, zero, rs
Esto se cumple para cualquier valor excepto cero. El ensamblador realiza la traducción cuando escribes snez.
Un cálculo a menudo produce un valor cuya única propiedad útil es si es cero, como un recuento de elementos restantes, la diferencia entre dos cosas o un grupo de indicadores. snez reduce ese valor a 1 cuando no es cero y a 0 cuando es cero, la forma estándar de una función que devuelve una respuesta de sí o no.
El manual de RISC-V define snez como una pseudoinstrucción del ensamblador para sltu con x0 como primer operando fuente. Establece rd a 1 si rs2 no es igual a cero y a 0 en caso contrario.
snez funciona con XOR para comprobar la desigualdad. Aplica XOR a los dos valores, lo que produce un resultado distinto de cero solo cuando difieren, y luego aplica snez para obtener un 1 cuando son diferentes. Junto con seqz, esto produce un resultado verdadero o falso para igual y para no igual, que puedes combinar con and y or en condiciones más grandes sin un salto.
Se expande a
sltu rd, zero, rs
El ensamblador reemplaza esta pseudoinstrucción con la instrucción o instrucciones reales enumeradas arriba.
Ejemplo
li t0, 5 snez t1, t0 # t1 = 1
