yosoy_bostero escribió:antes que nada le pido a los que estan codificando que utilicen por favor mas comentarios y/o explicaciones.
Cierto, pero es que estamos ansiosos por hacer que funcione algo No es una excusa, igualmente esta tarde pondré las reglas para los comentarios para poder generar documentación posteriormente con Doxygen.
yosoy_bostero escribió:Primero que nada si me pueden explicar por arriba el funcionamiento que estan queriendo implementar con la memoria ram y todas esas clases, controladores y demas. (es decir, cual es la idea basica)
La CPU manda las órdenes de acceso (lectura/escritura de datos) al controlador de memoria, que es el que se encarga de mandar la orden al dispositivo que corresponda, ya que dependiendo de la dirección de memoria a la que se pretende acceder se tiene que mandar la orden a un dispositivo u a otro diferente.
yosoy_bostero escribió:A que se refieren con Mapear? se lo que es una memoria, pero que quieren implementar al "mapear" ?
Mapear significa cambiar de dirección. Ten en cuenta que la CPU intentará acceder a direcciones específicas de la PSP, que no tienen sentido para un PC y un emulador. Por tanto estas direcciones hay que traducirlas a direcciones que nuestro emulador entienda y pueda manejar. Es decir, mapear es asignar direcciones de memoria de PC para las direcciones de memoria de PSP.
yosoy_bostero escribió:Una consulta mas de C, que funcion cumplen los 2 puntos (:)
struct {
unsigned : 6;
unsigned rS : 5;
unsigned rT : 5;
unsigned rD : 5;
unsigned sa : 5;
unsigned func: 6;
En codigo como este?
Mírate la estructura union en cualquier manual de C.
yosoy_bostero escribió:Me podran explicar esta linea? " static tError (cAllegrex::* InstruccionesOpcode[64])();"
Vector estático de punteros a métodos (C/C++ acepta punteros a funciones/métodos). Esto hace que usando el opcode de la instrucción como índice se llame directamente al método que lo decodifica, en vez de tener que hacer un switch y luego llamar al método.
yosoy_bostero escribió:Que vendria a ser InstruccionesOpcode?
Código: Seleccionar todo
static tError (cAllegrex::* InstruccionesOpcode[64])();
Un vector estático de punteros a métodos. No entiendo por qué preguntas 2 veces lo mismo
yosoy_bostero escribió:a veces para uno (inexperto) interpretar a partir del codigo puro es medio complicado
En realidad lo que te falla es más conocimiento sobre arquitectura de PSP y procesadores MIPS. Revisa la documentación sobre este tema, sobre todo los manuales del procesador (que es lo que más estamos tocando ahora mismo).
Un saludo y animo a todos que pregunten lo que no entiendan.