Dudas sobre el codigo fuente

Moderadores: Kravenbcn, largeroliker, LnD, fidelcastro, cerealkiller, pspCaracas, dark_sasuke, m0skit0, ka69, zacky06

yosoy_bostero
Enteradillo
Enteradillo
Mensajes: 43
Registrado: 12 Ene 2011, 16:55

Re: Dudas sobre el codigo fuente

Mensajepor yosoy_bostero » 26 Ene 2011, 19:48

yo estoy probando con un vector y alguna matriz cualquiera y sucede lo qe vos decis solo se puede asignar en la declaracion de esa manera ( {...} ) sino no se puede, habra qe rellenar el vector uno por uno?

lo mejor seria inicializarlo con un for con los valores de instruccion invalida, y despues agregar solo las necesarias, otra cosa no se me ocurre...

soulless
Desarrollador
Desarrollador
Mensajes: 64
Registrado: 23 Oct 2009, 07:56

Re: Dudas sobre el codigo fuente

Mensajepor soulless » 26 Ene 2011, 20:19

Asigne los valores al vector uno a uno, OK por ahi, pero luego me ha dado error sobre perdida de precision, en la lina 97 de cBloque.cpp, esa linea contiene esto:

Código: Seleccionar todo

tDireccion pbase = (tDireccion)puntero + desplazamiento;


lo cambie por esto, para deshacerme del error de perdida precision:

Código: Seleccionar todo

tDireccion pbase = *((tDireccion*)puntero + desplazamiento);


Con este cambio compila, pero me lanza un error durante la ejecucion (no me llevo bien con el debugger de xcode, asi que esperare a que me sea devuelta la maquina en que tengo linux), segun la consola:

Código: Seleccionar todo

error for object 0x1200000: pointer being freed was not allocated.


A falta de saber quien es ese :canuto:
"Quiero irme cuando quiero. Es de mal gusto prolongar artificialmente la vida. He hecho mi parte, es hora de irse. Yo lo haré con elegancia." -Albert Einstein.-

yosoy_bostero
Enteradillo
Enteradillo
Mensajes: 43
Registrado: 12 Ene 2011, 16:55

Re: Dudas sobre el codigo fuente

Mensajepor yosoy_bostero » 26 Ene 2011, 20:39

yo necesito que me tiren una idea basica de cada clase de la memoria porque con el codigo fuente me estoy volviendo bastante loco, si alguien puede seria genial para poder intentar aportar algo, pensaba en modificar la estructura de las operaciones tal vez haciendolas objetos pero creo qe seria mas complicado (aunque tal vez mas ordenado) que lo que esta hecho hasta ahora.

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5586
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: Dudas sobre el codigo fuente

Mensajepor m0skit0 » 26 Ene 2011, 23:30

Ok ahora sí compila. Se conoce que un servidor lo estaba compilando mal :oops:

Efectivamente esa no es una forma estándar de inicializar un array en C++:

Código: Seleccionar todo

cAllegrex.cpp:84: warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x

Y aparte, davidgf échale un vistazo a esto:

Código: Seleccionar todo

cAllegrex.cpp:427: warning: unused variable ‘direccion’

Los warnings hay que eliminarlos por completo a ser posible.

yosoy_bostero escribió:cBloque

Simplemente un buffer, un espacio reservado de memoria. Es la representación de un espacio de direcciones de PSP mapeado en el PC. Es decir, representa un bloque de memoria de PSP, pero en el PC, por tanto está representado por 2 direcciones: una de PSP (tDireccion direccion_base) y una de PC (tByte* puntero).

yosoy_bostero escribió:cControladorMemoria

Éste es un dispositivo de la PSP, que también está presente en los PCs. Se encarga de dirigir las direcciones pedidas por la CPU al dispositivo que corresponda. No todas las direcciones de memoria se referien a memoria principal, sino que algunos dispositivos están "mapeados" en memoria, esto es, sus memorias internas (RAM interna, registros de control...) están mapeadas a direcciones de memoria. Esto significa que al acceder a ciertas direcciones de memoria, en realidad estamos accediendo a los dispositivos, y no a la RAM principal. Ésta técnica de entrada/salida se denomina E/S mapeada en memoria. Muchos procesadores funcionan según este modelo (Motorola, MIPS, PowerPC...) pero Intel/AMD no.

yosoy_bostero escribió:cMapeoDireccion

Indica qué direcciones están mapeadas a qué componente. Simplemente sirve de almacenamiento de datos para cControladorMemoria. Al recibir cControladorMemoria una dirección de memoria desde la CPU (la CPU sólo conoce cControladorMemoria, no los componentes directamente), revisa sus mapeos de direcciones (objetos cMapeoDireccion) y de ahí extrae el puntero al dispositivo en cuestión (void* componente), y le pasa la orden para que la procese.

yosoy_bostero escribió:cMapeoDireccionamiento

Un contenedor para todos los mapeos de cControladorMemoria. Simplemente contiene varios objetos cMapeoDireccion y provee una interfaz sencilla para que cControladorMemoria mapee direcciones.

yosoy_bostero escribió:cMemOrden

Orden de lectura/escritura de dato para un dispositivo. No tiene por qué ser una memoria RAM, cualquier componente que tenga memorias internas accesibles desde otros dispositivos puede recibir estas órdenes. Igualmente no sólo la CPU puede mandar estas órdenes. También implementa la orden de crear un bloque de memoria.

yosoy_bostero escribió:cMemoria

La memoria prncipal de la PSP, compuesta de varios bloques de memoria reservada. Tiene un atributo cMemOrden orden que almacena la orden actual a procesar por la memoria (lectura de dato, escritura de dato, creación de bloque de memoria).
Imagen

soulless
Desarrollador
Desarrollador
Mensajes: 64
Registrado: 23 Oct 2009, 07:56

Re: Dudas sobre el codigo fuente

Mensajepor soulless » 27 Ene 2011, 02:52

Acabo de hacer un checkout y aun no esta puesto lo del vector InstruccionesOpcode, aqui dejo la asignacion uno a uno:

Spoiler:

Código: Seleccionar todo

   InstruccionesOpcode[0] = &cAllegrex::decodificarInstTipoR;      // 0x00
   InstruccionesOpcode[1] = &cAllegrex::decodificarInstTipoREGIMM;
   InstruccionesOpcode[2] = &cAllegrex::decodificarInstTipoJ;
   InstruccionesOpcode[3] = &cAllegrex::decodificarInstTipoJAL;
   InstruccionesOpcode[4] = &cAllegrex::decodificarInstTipoBEQ;
   InstruccionesOpcode[5] = &cAllegrex::decodificarInstTipoBNE;
   InstruccionesOpcode[6] = &cAllegrex::decodificarInstTipoBLEZ;
   InstruccionesOpcode[7] = &cAllegrex::decodificarInstTipoBGTZ;
   InstruccionesOpcode[8] = &cAllegrex::decodificarInstTipoAddI;
   InstruccionesOpcode[9] = &cAllegrex::decodificarInstTipoAddIU;
   InstruccionesOpcode[10] = &cAllegrex::decodificarInstTipoSLTI;
   InstruccionesOpcode[11] = &cAllegrex::decodificarInstTipoSLTIU;
   InstruccionesOpcode[12] = &cAllegrex::decodificarInstTipoAndI;
   InstruccionesOpcode[13] = &cAllegrex::decodificarInstTipoOrI;
   InstruccionesOpcode[14] = &cAllegrex::decodificarInstTipoXorI;
   InstruccionesOpcode[15] = &cAllegrex::decodificarInstNoValida;
   InstruccionesOpcode[16] = &cAllegrex::decodificarInstTipoCP;    // 0x10
   InstruccionesOpcode[17] = &cAllegrex::decodificarInstTipoCP;
   InstruccionesOpcode[18] = &cAllegrex::decodificarInstTipoCP;
   InstruccionesOpcode[19] = &cAllegrex::decodificarInstTipoCP;
   InstruccionesOpcode[20] = &cAllegrex::decodificarInstTipoBEQL;
   InstruccionesOpcode[21] = &cAllegrex::decodificarInstTipoBNEL;
   InstruccionesOpcode[22] = &cAllegrex::decodificarInstTipoBLEZL;
   InstruccionesOpcode[23] = &cAllegrex::decodificarInstTipoBGTZL;
   InstruccionesOpcode[24] = &cAllegrex::decodificarInstNoValida;
   InstruccionesOpcode[25] = &cAllegrex::decodificarInstNoValida;
   InstruccionesOpcode[26] = &cAllegrex::decodificarInstNoValida;
   InstruccionesOpcode[27] = &cAllegrex::decodificarInstNoValida;
   InstruccionesOpcode[28] = &cAllegrex::decodificarInstNoValida;
   InstruccionesOpcode[29] = &cAllegrex::decodificarInstNoValida;
   InstruccionesOpcode[30] = &cAllegrex::decodificarInstNoValida;
   InstruccionesOpcode[31] = &cAllegrex::decodificarInstNoValida;
   InstruccionesOpcode[32] = &cAllegrex::decodificarInstTipoLB;     // 0x20
   InstruccionesOpcode[33] = &cAllegrex::decodificarInstTipoLH;
   InstruccionesOpcode[34] = &cAllegrex::decodificarInstNoValida;
   InstruccionesOpcode[35] = &cAllegrex::decodificarInstTipoLW;
   InstruccionesOpcode[36] = &cAllegrex::decodificarInstTipoLBU;
   InstruccionesOpcode[37] = &cAllegrex::decodificarInstTipoLHU;
   InstruccionesOpcode[38] = &cAllegrex::decodificarInstNoValida;
   InstruccionesOpcode[39] = &cAllegrex::decodificarInstNoValida;
   InstruccionesOpcode[40] = &cAllegrex::decodificarInstTipoSB;
   InstruccionesOpcode[41] = &cAllegrex::decodificarInstTipoSH;
   InstruccionesOpcode[42] = &cAllegrex::decodificarInstNoValida;
   InstruccionesOpcode[43] = &cAllegrex::decodificarInstTipoSW;
   InstruccionesOpcode[44] = &cAllegrex::decodificarInstNoValida;
   InstruccionesOpcode[45] = &cAllegrex::decodificarInstNoValida;
   InstruccionesOpcode[46] = &cAllegrex::decodificarInstNoValida;
   InstruccionesOpcode[47] = &cAllegrex::decodificarInstNoValida;
   InstruccionesOpcode[48] = &cAllegrex::decodificarInstNoValida;   // 0x30
   InstruccionesOpcode[49] = &cAllegrex::decodificarInstNoValida;
   InstruccionesOpcode[50] = &cAllegrex::decodificarInstNoValida;
   InstruccionesOpcode[51] = &cAllegrex::decodificarInstNoValida;
   InstruccionesOpcode[52] = &cAllegrex::decodificarInstNoValida;
   InstruccionesOpcode[53] = &cAllegrex::decodificarInstNoValida;
   InstruccionesOpcode[54] = &cAllegrex::decodificarInstNoValida;
   InstruccionesOpcode[55] = &cAllegrex::decodificarInstNoValida;
   InstruccionesOpcode[56] = &cAllegrex::decodificarInstNoValida;
   InstruccionesOpcode[57] = &cAllegrex::decodificarInstNoValida;
   InstruccionesOpcode[58] = &cAllegrex::decodificarInstNoValida;
   InstruccionesOpcode[59] = &cAllegrex::decodificarInstNoValida;
   InstruccionesOpcode[60] = &cAllegrex::decodificarInstNoValida;
   InstruccionesOpcode[61] = &cAllegrex::decodificarInstNoValida;
   InstruccionesOpcode[62] = &cAllegrex::decodificarInstNoValida;
   InstruccionesOpcode[63] = &cAllegrex::decodificarInstNoValida;
"Quiero irme cuando quiero. Es de mal gusto prolongar artificialmente la vida. He hecho mi parte, es hora de irse. Yo lo haré con elegancia." -Albert Einstein.-

yosoy_bostero
Enteradillo
Enteradillo
Mensajes: 43
Registrado: 12 Ene 2011, 16:55

Re: Dudas sobre el codigo fuente

Mensajepor yosoy_bostero » 27 Ene 2011, 04:47

me ganaste de mano, me iba a poner con eso que es de lo poco que puedo tocar, de paso le pido a m0skit0 que me de permisos para poder tocar minimas cosas o al menos agregar comentarios que le faltan al codigo.

donde dice editar codigo hace algo? porque esa opcion la tengo yo pero no estoy "autorizado" digamos.

como funciona eso en el svn?

-- Doble Post --

m0skit0 mas claro que el agua!! genial explicacion me vino barbaro ahora me pongo a leer mas profundamente el codigo pero la verdad el concepto quedo clarisimo muchisimas gracias (Y)

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5586
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: Dudas sobre el codigo fuente

Mensajepor m0skit0 » 27 Ene 2011, 09:10

@soulless: pásame tu correo por MP que te agrego a la lista de contribución.

yosoy_bostero escribió:de paso le pido a m0skit0 que me de permisos para poder tocar minimas cosas o al menos agregar comentarios que le faltan al codigo.

Ok, pero los comentarios deberían tener el formato de Doxygen. Míratelo y si quieres ir haciendo la documentación, pues mejor que mejor. A partir de ahora intentemos que todo lo codificado vaya comentado sin falta.

yosoy_bostero escribió:donde dice editar codigo hace algo? porque esa opcion la tengo yo pero no estoy "autorizado" digamos.
como funciona eso en el svn?

No sé a qué te refieres con "Editar". Sólo espero que no vayas a hacer modificaciones en el código desde la web del proyecto en Google Code...
Imagen

yosoy_bostero
Enteradillo
Enteradillo
Mensajes: 43
Registrado: 12 Ene 2011, 16:55

Re: Dudas sobre el codigo fuente

Mensajepor yosoy_bostero » 27 Ene 2011, 15:41

Estoy mirando lo del doxygen para ver el formato como es, debe ser un "estilo" asi no m0skit0? yo ma que nada para comentar algunas lineas "complicadas" (para mi) asi poder entender mas facil el codigo, ademas de comentar estructuras o clases enteras

lo del svn yo nunca lo use, por eso te preguntaba, lo de edit segun veo es para "sugerir cambios", vos lo codificas y lo subis despues no?

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5586
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: Dudas sobre el codigo fuente

Mensajepor m0skit0 » 27 Ene 2011, 16:40

yosoy_bostero escribió:Estoy mirando lo del doxygen para ver el formato como es, debe ser un "estilo" asi no m0skit0? yo ma que nada para comentar algunas lineas "complicadas" (para mi) asi poder entender mas facil el codigo, ademas de comentar estructuras o clases enteras

Sí, tiene que tener un formato determinado y tienen que aparecer en un lugar determinado. Acepta varios formatos y varios lugares igualmente.

yosoy_bostero escribió:lo del svn yo nunca lo use, por eso te preguntaba, lo de edit segun veo es para "sugerir cambios", vos lo codificas y lo subis despues no?

El SVN se maneja desde tu ordenador, no desde la página de Google Code. Ahí sólo se administra o se comenta, nada más. No se modifica el código. Para SVN debes usar un cliente SVN instalado en tu PC. Personalmente uso un plugin del Eclipse (Subclipse) que integra el SVN al IDE, y ya lo manejo todo desde ahí, muchísimo más cómodo. Si alguien quiere un tuto de Eclipse + SVN, que avise.
Imagen

yosoy_bostero
Enteradillo
Enteradillo
Mensajes: 43
Registrado: 12 Ene 2011, 16:55

Re: Dudas sobre el codigo fuente

Mensajepor yosoy_bostero » 31 Ene 2011, 17:08

Bueno despues de unos dias de ausencia, vuelvo. Tendre que leer bastante a fondo el codigo a ver como fue quedando. m0sikito, voy a instalar el eclipse para trabajar (ya que tenia el tortoise svn pero no se usarlo bien). Queria saber si habia alguna tarea a realizar o por donde se estaba encaminando todo (ojo estuve siguiendo las conversaciones en el foro, solo que no podia ver el codigo.

Tambien me gustaria preguntarte cual es la idea de la clase cManipuladorsistfich es decir que ficheros pensas manipular y demas.

Y mientras tanto estuve pensando en si no seria util un rediseño de la memoria, haciendo que cada componente tenga su cMemoria dentro de su clase y que por ejemplo el CPU tenga una coleccion de objetos cMemoria y trabaje con ellos desde ahi.
Al inicializar (construir) cada objeto se "enviaria" ese obejto de cMemoria a la coleccion del cpu. No se que les parece? se que habria que modificar varias cosas, pero evitariamos crear clases de mapeo y ese tipo de cosas.


Volver a “Proyecto Emulador”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados