Primeros pasos
Ya tenemos bastante claro como funciona gtk y glade, como manejar árboles y todo eso. Además hemos descubierto un widget llamado gtksourceview que nos ahorrará algo de trabajo, es una caja de texto que colorea automáticamente un lenguaje determinado.
He programado la clase memoria, que simula una memoria (obvio) y la clase registros, que simula todos los registros internos del procesador, no sólo el banco de registros, sino también el PC, los flags, la instrucción actual…, hacerlo de esta manera soluciona algunos problemas que habíamos encontrado y hace más sencilla la programación.
Al módulo para cambiar entre bases numéricas he añadido dos funciones para pasar de decimal a complemento a 2 y viceversa. He pensado que es más sencillo llevar a cabo las operaciones internas pasando a decimal y operando que creando funciones que realicen operaciones binarias en complemento a 2. No sólo de cara a la máquina rudimentaria (el procesador que estamos implementando en primer lugar), sino sobretodo de cara a procesadores más complejos y con más operaciones.
También he programado un depurador de código de máquina rudimentaria y un ensamblador, ya que no encontramos ninguno libre disponible.
El depurador por ahora más que depurador es un chequeador de sintaxis, funciona básicamente con expresiones regulares, tan sólo avisa de unos pocos errores, pero la mayoría de veces lanza la excepción InstruccionNoReconocida, e indica la línea en la que se ha producido el error. Con el tiempo le iré añadiendo más funcionalidad.
El ensamblador no funciona con expresiones regulares, eso lo hace más eficiente, pero no se si vale la pena, porque el código queda mucho más ofuscado, tal vez lo rehaga más adelante con expresiones regulares, y si la diferencia de tiempos no es mucha usaré la segunda opción.
Tanto en el depurador como en el ensamblador no funcionan todavía los macros, pero es cuestión de poco tiempo que los haga funcionar.
Y por ahora eso es todo, hasta la próxima.
Jaime Cabot.
3 comments Diciembre 4, 2006
Presentaciones
¡Hola a todos!
Este es nuestro primer post y como no podría ser de otra forma vamos a empezar presentándonos.
Somos tres estudiantes de informática de sistemas.
*Paco (el que escribe): 21 años, 2º de sistemas en la UIB, Mallorca. Mi nick, como veis, es unf.
*Iván : 21 años, 2º de sistemas en la UIB, Mallorca. Su nick es Godfather.
*Jaime: 22 años, 2º de sistemas en la Complutense, Madrid (e intentándolo en 1º de física a distancia, ¿cuándo te darás cuenta de que es imposible? xD). Le llamaremos Cabot.
Decidimos apuntarnos a este concurso con la sana y sincera intención de aprender (¡en serio!). Como todo informático que se precie hemos participado en infinidad de proyectos que revolucionarían el mundo, pero pasa el tiempo y te das cuenta de que, en definitiva, no has hecho nada serio en tu vida. Así que en este proyecto vimos una buena oportunidad: nos gusta programar y nos gusta el software libre, ¿qué más podemos pedir?
Vamos a desarrollar el proyecto en python y gtk, pygtk para ser concretos y usando Glade. Antes de empezar esto teníamos nociones básicas de python y ninguna sobre gtk o Glade. Tampoco habíamos usado nunca un subversion o CVS, así que todo esto es lo que estamos aprendiendo.
Pero… ¿de qué va nuestro proyecto?
El nombre es bastante elocuente: FASE, Free ASsembler Emulator. Pretende ser un emulador de distintos ensambladores.
¿Y para qué narices nos metemos en este berenjenal?
Gran pregunta (gracias).
Todos los que hemos pasado por ese suplicio al que llaman 1º de carrera habremos tenido una asignatura en la que nos han enseñado los fundamentos del ensamblador. Yo, por ejemplo, tuve que hacerlo sobre un emulador de Mac OS 7, que dentro tenía instalado un emulador de PDP-11. ¿Os parece eso normal? Así que nuestra idea surge de una necesidad, la de proporcionar un entorno medianamente decente para el aprendizaje de ensamblador.
Vamos a intentar hacerlo lo más modular posible. Lo que queremos es hacer un GUI estándar al que se puedan enchufar distintos módulos, que serán los distintos ensambladores. Los módulos que primero escribiremos son los de la Máquina Rudimentaria, que utilizan en la Complutense para enseñar ensamblador y el de PDP-11, que es el que usan en la UIB (veremos qué tal se nos da este).
Bueno, me despido temporalmente y en mi propio post os comentaré las vicisitudes de un grupo de ilusos intentando entender el GtkTreeView (si alguien controla el asunto que por favor diga algo).
Por cierto, me huele que casi todos los posts del blog los voy a escribir yo. Ojalá que no.
2 comments Noviembre 18, 2006