Cuando intento trabajar en enteros sin signo en MIPS, el resultado de cada operación que hago permanece firmado (es decir, los enteros son todos en complemento a 2), aunque cada operación que realizo es sin signo: addu
, multu
y así cuarto ...¿Por qué las operaciones de MIPS en números sin firmar dan resultados firmados?
Cuando imprimo números en el rango [2^31, 2^32 - 1]
obtengo su valor negativo "desbordado" como si estuvieran firmados (supongo que sí).
Sin embargo, cuando intento algo como esto:
li $v0, 1
li $a0, 2147483648 # or any bigger number
syscall
el número impreso es siempre 2147483647 (2^31 - 1)
Estoy confundido ... ¿Qué me falta?
PD: No he incluido mi código, ya que no es muy legible (como el código de ensamblaje) y dejando de lado este problema, parece estar funcionando bien. ¡Si alguien siente que es necesario, lo incluiré de inmediato!
Estaba buscando en toda la red una respuesta ... en cualquier parte menos obvia. ¡Gracias! – dankilman
Entonces, ¿por qué usan la terminología "firmado y sin firmar" en lugar de algo como "marcado y desactivado"? – dan04
Es un nombre inapropiado. Lea la primera cita. –