SoloCodigo
Asuntos Oficiales => La taberna del BIT => Mensaje iniciado por: su - en Martes 4 de Abril de 2006, 02:14
-
Hola forer@s.
Les pongo un reto :devil: , hacer un copilador (para cualquier lenguaje) y cualquier plataforma ;)
Tengo esta info:
http://compilers.iecc.com/crenshaw/ (http://compilers.iecc.com/crenshaw/)
:hola:
-
me uno al reto hace rato que venia haciendo un interprete de un lenguje a otro pero solo tenia el analizador lexico,sintactico y semantico pero habia parado porque no sabia como generar un .exe o mandarlo a ejecutar el programa me falta llegar a esas capas inferiores, ya tenia en mente postear lo mismo en el foro de ensamblador que creo que son los gurus en los temas de lenguaje de maquina y binario pero ya que lo colocaste aca se puede hacer un buen compilador. pues yo entendiendo la teoria de compiladores.
-
me uno, yo estuve desarrollando un compilador de un lenguaje propio, generaba codigo en asm como salida, solo me falta el tema de parametros y funciones, osea se pueden definir funciones pero falta el codigo que se genera cuando llamas a una funcion para que los parametros pasados sean variables locales.
pero por el momento esta parado, vere si posteo algo sobre eso.
-
Estuve leyendo un poco mas y seria mas interesante hacer un "just-in-time".
Buenom supongo que tendre que superdotar mi cerebro para hacerlo, pero supongo que me llevara a otro nivel de programacion ;)
:hola:
Animense
-
aca hay un listado de compiladores ya hechos y esta su codigo fuente. http://www.bloodshed.net/compilers/index.html (http://www.bloodshed.net/compilers/index.html)
- algien me podia explicar como hago para generar un .exe que se pueda ejecutar en windows algo sencillo como a = 1 + 2 y que me imprima en pantalla de DOS a=3 solamente eso y que sea preferiblemente en vb
-
- algien me podia explicar como hago para generar un .exe que se pueda ejecutar en windows algo sencillo como a = 1 + 2 y que me imprima en pantalla de DOS a=3 solamente eso y que sea preferiblemente en vb
Para usar la consola desde VB vas a tener que usar la API de Windows:
AllocConsole
GetStdHandle STD_OUTPUT_HANDLE para escribir STD_INPUT_HANDLE para leer
Esos handles los podes usar con ReadFile y WriteFile.
-
pero al utilizar eso estoy utilizando el compilador de vb al generar el resultado?
mejpr dicho mi pregunta es generar un .exe y guardarlo pero por codigo sin ayuda de empaquetados ni nada de eso y despues darle click y que se ejecute.
-
pero al utilizar eso estoy utilizando el compilador de vb al generar el resultado?
mejpr dicho mi pregunta es generar un .exe y guardarlo pero por codigo sin ayuda de empaquetados ni nada de eso y despues darle click y que se ejecute.
Entonces lo que necesitas es conocer el formato PE (Portable Executable) ademas de assembly que es lo que vas a escribir (en numeral) como codigo del ejecutable.
-
Creo que hacer un traductor no es lo mas indicado, el compilador deveria ser en bytecode o p-code ya que seria una interfase "mas limpia", pero bueno no importa, el reto es hacer un compilador (sin limites, es deci para lo que sea contal de que sirva)
Un momento, PE es el Object file de Microsoft, creo que estoy mal informado.
Como es el formato de un EXE, es decir, como esta estructurado?
:blink:
-
entonces como nos organizamos para
hacer un copilador (para cualquier lenguaje) y cualquier plataforma
creo que tendriamos que mirar el codigo fuente de mono y como funciona la maquina virtual de java. en que lenguaje lo montamos, haber si lo mostramos en algun congreso.
-
Una pequeñísima colaboración. Un manual introductorio de compiladores en español.
Compiladores - Monografias.com (http://www.monografias.com/trabajos11/compil/compil.shtml)
La verdad no he hecho un compilador. En una clase me dejaron un proyecto donde realizaría un compilador en C para un lenguaje máquina hipotético. Pero se presentaron problemas en la escuela (maldita UdeG :angry: ) y debí cambiarme de turno y no pude ver bien ese tema. Sólo alcancé a realizar el grafo del automáta finito para el analizador léxico.
Espero sirva de algo a alguien. :rain:
-
Un momento, PE es el Object file de Microsoft, creo que estoy mal informado.
Como es el formato de un EXE, es decir, como esta estructurado?
:blink:
http://en.wikipedia.org/wiki/Portable_Executable (http://en.wikipedia.org/wiki/Portable_Executable) :smartass:
-
entonces como nos organizamos para
hacer un copilador (para cualquier lenguaje) y cualquier plataforma
creo que tendriamos que mirar el codigo fuente de mono y como funciona la maquina virtual de java. en que lenguaje lo montamos, haber si lo mostramos en algun congreso.
:whistling: Realmente fue que los parentesis no los puse bien y lo de "y cualquier plataforma" esta dentro de los parentesis :rolleyes: es para el lenguaje y la plataforma que el desarroyador quiera.
Masiosare y Eternal, gracias por la info. :lol:
:hola:
-
pero a mi me gusto la idea, todo esta en guiarse en uno ya hecho a menos que lo que pretendas hacer sea innovador, con lo del traductor que no te gusto creo que con tanto lenguaje por hay regado es bueno hacer un traductor y que ejecute todos los lenguajes.
-
Lo del traductor no me gusta por que no tiene sentido hacer algo en C o TP para pasarlo a ASM en una calidad mas vaja (No lo digo por ASM si no por que es un desgaste sabiendo que el codigo generado nunca es igual al escrito por un humano) aunque de todas formas habria que hacer una espesie detraductor para crear el ejecutable.
Lo de mono+java bitecode, bueno, no dije que no :lol: si puedes con eso, adelante, pero para mi es Chino (Dificil de escribir, mas no imposible).
Al fin, la idea es transformar un codigo en un ejecutable, ese es el verdadero reto.
:hola:
-
como va, estoy barado en crear el ejecutable .exe.
-
Mira el enlace que te deje, necesitas dominar ese formato a la perfeccion. Yo empezaria haciendo solo un output de .OBJ y usando el linker de Microsoft (link.exe jeje).
-
☺唐鳳☻ creo Win32::Exe, que me ayudo a crear los Pe, y PAR, para los Elf.
En teoria, podia compilar Pe en Unix, y Elf en Win32, pero formatie el disco y perdi toodo :(
Maldito OpenBSD, las particiones las hace ... bueno, tendre que empesar desde cero. :angry: