2011-06-03 14 views
5

Estoy tratando de ordenar una lista de números de 32 bits usando el ensamblador MIPS y xspim. He estado avanzando a través de mi código para ver qué falla y noté que al comparar 0x00000000 con 0xFFFFFFFF no compara estos números como debería. En el punto donde falla el programa Tengo 0x00000000 en $ t3 y t4 0xFFFFFFFF en $ y se ve así:Comparando 0x00000000 con 0xFFFFFFFF en MIPS

bge $t3,$t4,lol #So si t3 es mayor o igual que debería saltar hacia adelante bien continuar. Ahora el problema es que el programa salta a pesar de que t3 es más pequeño.

+0

¿Quizás interprete 0xffffffff como -1 (complemento 2)? – aioobe

+0

Me salteé el código de clasificación e imprimí los números y algunos de ellos en negativo. ¿Cómo puedo evitarlo? – Xturbed1442

+0

Agregó una respuesta. – aioobe

Respuesta

4

Esto es porque 0xffffffff se interpreta como -1, es decir, en 2-complemento.

Existen instrucciones específicas para tratar los números como si no hubieran sido firmados. Usa estas instrucciones (Compare por ejemplo bgt y bgtu donde u significa unsigned.)