› Foros › Retro y descatalogado › Consolas clásicas
playstation escribió:Gracias, como puedes ver me estoy interesando por el tema. Voy a ver si encuentr algo más de info y la posteo aquí.
Saludos.
andoba escribió:C + ensamblador de MIPS.
Saludos.
magno escribió:
¿¿?? ¿Qué se supone que es un ensamblador de MIPS? MIPS significa Mega/Million Instructions Per Second, con lo que eso que has dicho sería decir que hay un lenguaje que ensambla Kilómetros Por Hora....
La N64 se programaba con un kit de desarrollo propio que venía a escribirse en C; los programadores recibían de manos de Nintendo un kit con una placa de desarrollo, el manual de uso y las librerías de programación junto con una especie de entorno de desarrollo. Pero parece que ese kit era fallón, no generaba código muy depurado y encima no era todo lo potente que podría ser, y ése fue uno de los motivos por el que Squaresoft devolvió el kit que había recibido de Nintendo para que empezara a programar el motor del Final Fantasy VII (del que ya tenían hechos los modelos de escenarios y personajes) y parece que era muy complicado generar los efectos y gráficos querían con dicho kit.
Sé que en la última etapa de la N64 estaba disponible una nueva versión que no tenía nada que ver en cuanto a potencia gráfica y versatilidad con el primero que puso a disposición de los programadores.
¿¿No os habéis preguntado nunca por qué había tanta diferencia gráfica en los primeros juegos de N64 entre los que hacía Nintendo y los que hacían otras Third-Parties?? Es evidente que los que programaban en Nintendo, dominaban el hardware y podían hacer virguerías saltándose las librerías que ellos mismos ponían a disposición de los programadores de Third-Parties....
magno escribió:
¿¿?? ¿Qué se supone que es un ensamblador de MIPS? MIPS significa Mega/Million Instructions Per Second, con lo que eso que has dicho sería decir que hay un lenguaje que ensambla Kilómetros Por Hora....
MIPS R4000 escribió:INICIO:
90030F00 LBU R3,0E00h(R0) ;SE SACA EL NUMERO DE DATOS A PROCESAR
240A0000 ADDIU R10,R0,0000h ;SE PONE EL CONTADOR DE LAS TABLAS A 0
24040000 ADDIU R4,R0,0000h ;SE PONE EL CONTEO DE LA TABLA A A 0
24050000 ADDIU R5,R0,0000h ;SE PONE EL CONTEO DE LA TABLA B A 0
24060001 ADDIU R6,R0,0001h ;R6 A 1, QUE VA A SER NUESTRO 1 PARA COMPARAR
24070010 ADDIU R7,R0,0010h ;R7 A 10h (16) QUE VA A SERVIR DE REFERENCIA PARA ROTAR
24090000 ADDIU R9,R0,0000h ;SE PONE EL INDICE DEL BUCLE PRINCIPAL A 0
240C0000 ADDIU R12,R0,0000h ;SE PONE A 0 EL CONTADOR DE LA TABLA R
BUCLE:
95410A00 LHU R1,0A00(R10) ;SE SACA EL DATO DE LA TABLA A
95420C00 LHU R2,0C00(R10) ;SE SACA EL DATO DE LA TABLA B
24040000 ADDIU R4,R0,0000h ;SE PONE EL CONTEO DE LA TABLA A A 0
24050000 ADDIU R5,R0,0000h ;SE PONE EL CONTEO DE LA TABLA B A 0
00074021 ADDU R8,R0,R7 ;SE PONE EL INDICE DE LOS BUCLES DE ROTACION A 10h(16)
BUCLEROTAA:
00265824 AND R11,R1,R6 ;SE HACE LA AND ENTRE EL DATO Y EL 1 PARA SACAR EL PRIMER BIT
008B2021 ADDU R4,R4,R11 ;Y SE SUMA AL CONTEO DE LA TABLA A
00010842 SRL R1,R1,0001h ;SE ROTA EL DATO DE LA TABLA A A LA DERECHA
01064023 SUBU R8,R8,R6 ;SE DECREMENTA EL INDICE DEL BUCLEROTAA
1500FFFB BEQ R8,R0,BUCLEROTAA;SI R8(INDICE) ES 0 SALE DEL BUCLE, SI NO RETROCEDE FFFB
24E80000 ADDIU R8,R7,0000h ;SE VUELVE A PONER EL INDICE A 10h(16)
BUCLEROTAB:
00465824 AND R11,R2,R6 ;MISMAS OPERACIONES QUE EN EL BUCLE ANTERIOR
00AB2821 ADDU R5,R5,R11
00021042 SRL R2,R2,0001h
01064023 SUBU R8,R8,R6
1500FFFB BEQ R8,R0,BUCLEROTAB
00852022 SUB R4,R4,R5 ;SE RESTAN LOS CONTEOS Y SE ALMACENA EN R4
04830003 BGEZL R4,NUMPOSITIVO;SALTA SI EL NUMERO EN R4 ES POSITIVO
00000000 NOP
00042022 SUB R4,R0,R4 ;SI ES NEGATIVO, SE RESTA 0-NUMERO PARA OBTENER SU COMPLEMENTARIO
24840080 ADDIU R4,R4,0080h ;Y SE LE SUMA 0080h PARA PONER EL BIT DE SIGNO A 1 (NEGATIVO)
NUMPOSITIVO:
A1840E01 SB R4,0E01(R12) ;SE ALMACENA EL RESULTADO EN LA TABLA R
254A0002 ADDIU R10,R10,0002h ;SE AUMENTA EL CONTADOR DE TABLAS
258C0001 ADDIU R12,R12,0001h ;SE AUMENTA EL CONTADOR DE LA TABLA R
25290001 ADDIU R9,R9,0001h ;SE AUMENTA EL CONTADOR DEL BUCLE PRINCIPAL
1523FFE6 BNE R9,R3,BUCLE ;SI NO HA TERMINADO CON LOS DATOS VUELVE AL PRINCIPIO DEL BUCLE (FFE6)
END
jebiman escribió:
Esto es un procesador MIPS
Y por ahí se puede encontrar el manual de programación para ensamblador MIPS.
Que una palabraje signifique algo como Millones de Instrucciones por segundo, no quiere decir que no se utilice para denominar otras cosas, como estos dispositivos de 64 bits
Y voy más allá...si quieres hasta te pongo un ejemplo de programa en este ensamblador, con su codificación en hex, su traducción a mnemónicos y unas líneas de comentario:
Ahí queda ;P
magno escribió:Sí, sí, veo, veo..... veo cómo os habéis colado los dos
MIPS es una denominación como la de CISC o RISC, NO UN MICROPROCESADOR, NI TAMPOCO UN TIPO DE ENSAMBLADOR ESPECIAL
A ver si después de 7 años trabajando con ellos primero a nivel académico y luego como profesional, más la cantidad de cosas que he programado para SNES, resulta que no sé nada de microprocesadores.....
Y por cierto, ese ensamblador que ha puesto ahí jebiman podría ser de cualquier micro.... Es más, es casi IDÉNTICO al de un Picoblaze que es el que estoy usando en estos momentos en el trabajo....... Y no, no es un MIPS, ni RISC, ni CISC, ya que ni tan siquiera cumple la arquitectura Harvard.....
Lo que sí es cierto es lo que dijo anadoba, que las primeras estaciones Silicon Grapchis llevaban unos micros a los que se denominó MIPS, pero eso eso no quiere decir que se programara en ensamblador para MIPS, porque precisamente las librerías que proporcionaba Nintendo eran eso, código ensamblador optimizado (como casi todas las librerías para sistemas embebidos). Además, no tiene sentido que eso fuera así porque el MIPS era el micro de la estación de modelado NO DE LA NINTENDO 64. Y sigo añadiendo "peros" y es que los modelos gráficos no se tenían por qué hacer en una estación Silicon Graphics, aunque en Nintendo lo hacían por ese acuerdo al que llegaron con ella, porque RAREWare las usaba, porque se basaron en esa arquitectua para hacer la N64, etc....
Así que jebiman, como ves yo también sé ser un quedón, pero sin recurrir a la wikipedia....
r09 escribió:¿Que no existen los procesadores MIPS? ¿Entonces qué es esto? ¿Una empresa fantasma?
http://www.mips.com/
jebiman escribió:
No, lo que dice magno no es que no existan, sino que simplemente es una denominación...como CISC o RISC...aunque un procesador denominado MIPS es un RISC, y no tenga nada que ver una cosa con la otra, pero bueno, y en parte tb tiene razón, es una forma de denominar un tipo concreto de arquitectura dentro de los microprocesadores de arquitectura RISC, igual que existen otras arquitecturas como el 8086 o x86, y tienen su forma de ensamblar concreta....
Todo es relativo desde su punto de vista, pero como él tiene razón, yo ya me callo
r09 escribió:Pero esos cores pertenecen a una arquitectura con un juego de instrucciones propio, que es lo que se estaba diciendo en este hilo.
Saludos.
jebiman escribió:En fin, que me parece muy bien que sepas más que yo porque trabajas con ello, pero el que está chuleando aquí a los demás eres tú.