Compilador escrito en AutoIt
Compilador escrito en AutoIt
Por simple curiosidad, de ver como se hace...
¿Sabéis si hay algún compilador escrito en AutoIt?.
Ya digo, por ver como se hace una cosa tan tan chunga y juguetear un poco con él, siempre algo se aprenderá (porque imagino que podría hacerse en AutoIt, incluso para compilar cualquier lenguaje).
Me ha parecido ver algo en el foro inglés, pero el que escribía el post decía algo de que tenía algún problema. Vamos, que tenía pinta de no ir ;).
Se que está el código de compiladores escritos en otros lenguajes, GCC por ejemplo, creo que es de código abierto, pero además de no haberlo encontrado para compilarlo en Windows me enteraría muchísimo menos de lo que hace el código
:)
porque ese está escrito en C/C++.
Salu2!
¿Sabéis si hay algún compilador escrito en AutoIt?.
Ya digo, por ver como se hace una cosa tan tan chunga y juguetear un poco con él, siempre algo se aprenderá (porque imagino que podría hacerse en AutoIt, incluso para compilar cualquier lenguaje).
Me ha parecido ver algo en el foro inglés, pero el que escribía el post decía algo de que tenía algún problema. Vamos, que tenía pinta de no ir ;).
Se que está el código de compiladores escritos en otros lenguajes, GCC por ejemplo, creo que es de código abierto, pero además de no haberlo encontrado para compilarlo en Windows me enteraría muchísimo menos de lo que hace el código
:)
porque ese está escrito en C/C++.
Salu2!
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Re: Compilador escrito en AutoIt
Yo no he encontrado ninguno.
Técnicamente no es imposible, quizás no sería demasiado rápido pero se pueden programar los analizadores y generar código binario.
Pero te advierto que es un tema bastante complicado. Lo normal para hacer los analizadores sintáctico y semántico es saber temas de lenguajes formales y tener la gramática que genera el lenguaje a compilar. Aunque no lo parezca esto de lenguajes y gramáticas son matemáticas:
http://es.wikipedia.org/wiki/Gram%C3%A1tica_formal
Entonces creas la gramática que genera el lenguaje y la programas para que compruebe el archivo de entrada, luego se amplía ese código con el analizador semántico y finalmente se va generando código mientras no se encuentran errores.
Para generar el código evidentemente debes saber ensamblador (o vaya, código máquina directamente) de la plataforma donde vas a compilar, así que como ves es un tema bastante avanzado.
Técnicamente no es imposible, quizás no sería demasiado rápido pero se pueden programar los analizadores y generar código binario.
Pero te advierto que es un tema bastante complicado. Lo normal para hacer los analizadores sintáctico y semántico es saber temas de lenguajes formales y tener la gramática que genera el lenguaje a compilar. Aunque no lo parezca esto de lenguajes y gramáticas son matemáticas:
http://es.wikipedia.org/wiki/Gram%C3%A1tica_formal
Entonces creas la gramática que genera el lenguaje y la programas para que compruebe el archivo de entrada, luego se amplía ese código con el analizador semántico y finalmente se va generando código mientras no se encuentran errores.
Para generar el código evidentemente debes saber ensamblador (o vaya, código máquina directamente) de la plataforma donde vas a compilar, así que como ves es un tema bastante avanzado.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Re: Compilador escrito en AutoIt
Puf, sí... complicado complicado... :).
Sobre todo, porque de binario no se prácticamente nada y de eso de los lenguajes formales... es la primera vez que lo oigo ;).
Bueno... a modo de experimento, podría cogerse un compilador escrito en C/C++ u otro lenguaje y coger la parte que hace la conversión a código máquina (cuando dices plataforma, te estás refiriendo a sistema operativo ¿no, o al procesador?).
Con eso habría un buen trecho hecho, sólo quedaría el analizador, que no parece fácil con eso de los lenguajes formales :).
Pero podría hacerse en AutoIt, supongo que sería más sencillo que en otros lenguajes.
Salu2!
Sobre todo, porque de binario no se prácticamente nada y de eso de los lenguajes formales... es la primera vez que lo oigo ;).
Bueno... a modo de experimento, podría cogerse un compilador escrito en C/C++ u otro lenguaje y coger la parte que hace la conversión a código máquina (cuando dices plataforma, te estás refiriendo a sistema operativo ¿no, o al procesador?).
Con eso habría un buen trecho hecho, sólo quedaría el analizador, que no parece fácil con eso de los lenguajes formales :).
Pero podría hacerse en AutoIt, supongo que sería más sencillo que en otros lenguajes.
Salu2!
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Re: Compilador escrito en AutoIt
Hacerlo en AutoIT es casi tan complicado como en otros lenguajes. En este caso programar es lo de menos, lo difícil es saber hacer el compilador.
Bueno algunas limitaciones de AutoIT pueden complicar las cosas, pero probablemente se podrían subsanar (recursividad limitada, falta de tipos de datos, gestión directa de memoria...)
Efectivamente encontrarás compiladores de casi todos los lenguajes existentes en código abierto. Eso sí, el C es tan popular que se suele usar para hacer esos compiladores, así que normalmente encontrarás compiladores de otros lenguajes hechos en C.
Por supuesto los compiladores de C se suelen hacer en C
Bueno, C sí es una elección lógica porque es un lenguaje de bastante bajo nivel, más cercano a la máquina que otros, así que facilita la creación de código binario al ser fácil incluir directamente código en ensamblador.
Si quieres aprender un compilador busca uno en C, pero sin saber teoría de compiladores tampoco vas a entender mucho...
La plataforma está dirigida por la arquitectura del procesador, pero no es sólo eso, por ejemplo tienes Intel en lo que llamamos genéricamente PC y también en Mac, pero ambos tienen diferentes formas de acceder a los dispositivos, por ejemplo... Evidentemente hay que saber código máquina o ensamblador porque el resultado de compilar ¡es un programa en código máquina!
Bueno algunas limitaciones de AutoIT pueden complicar las cosas, pero probablemente se podrían subsanar (recursividad limitada, falta de tipos de datos, gestión directa de memoria...)
Efectivamente encontrarás compiladores de casi todos los lenguajes existentes en código abierto. Eso sí, el C es tan popular que se suele usar para hacer esos compiladores, así que normalmente encontrarás compiladores de otros lenguajes hechos en C.
Por supuesto los compiladores de C se suelen hacer en C
Bueno, C sí es una elección lógica porque es un lenguaje de bastante bajo nivel, más cercano a la máquina que otros, así que facilita la creación de código binario al ser fácil incluir directamente código en ensamblador.
Si quieres aprender un compilador busca uno en C, pero sin saber teoría de compiladores tampoco vas a entender mucho...
La plataforma está dirigida por la arquitectura del procesador, pero no es sólo eso, por ejemplo tienes Intel en lo que llamamos genéricamente PC y también en Mac, pero ambos tienen diferentes formas de acceder a los dispositivos, por ejemplo... Evidentemente hay que saber código máquina o ensamblador porque el resultado de compilar ¡es un programa en código máquina!
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
- BasicOs
- Site Admin
- Mensajes: 2091
- Registrado: 21 Nov 2006, 19:24
- Ubicación: El Internet - (Canarias, España)
- Contactar:
Re: Compilador escrito en AutoIt
Puedes simularlo y cargar el fuente dentro de un exe, ya luego lo sacas del exe con fileinstall() y lo recuperas.
Aquí esta ya funcionando y hecho. El lenguaje es un autoit abreviado:
www.emesn.com/autoitforum/viewforum.php?f=8
Salu22:)
PD
LO OTRO sin fuente con codigo binario compilado ES POSIBLE PERO necesitas conocimientos de como funciona un compilador y de lenguajes a bajo nivel. ;)
Aquí esta ya funcionando y hecho. El lenguaje es un autoit abreviado:
www.emesn.com/autoitforum/viewforum.php?f=8
Salu22:)
PD
LO OTRO sin fuente con codigo binario compilado ES POSIBLE PERO necesitas conocimientos de como funciona un compilador y de lenguajes a bajo nivel. ;)
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Re: Compilador escrito en AutoIt
¿?
Creo que estás hablando de "decompilar". Él dice lo contrario, hacer un compilador, y no necesariamente de AutoIt, sino EN AutoIt.
Creo que estás hablando de "decompilar". Él dice lo contrario, hacer un compilador, y no necesariamente de AutoIt, sino EN AutoIt.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
- BasicOs
- Site Admin
- Mensajes: 2091
- Registrado: 21 Nov 2006, 19:24
- Ubicación: El Internet - (Canarias, España)
- Contactar:
Re: Compilador escrito en AutoIt
No es eso lo que quiero decirXimorro escribió:¿?
Creo que estás hablando de "decompilar". Él dice lo contrario, hacer un compilador, y no necesariamente de AutoIt, sino EN AutoIt.
Me refiero exacto a lo que el dice pero usando un exe de autoit y metiendo dentro los comandos como fichero. Esto no es compilar pero parece que así lo es porq el txt o fuente va a un archivo temporal y a la memoria RAM. Luego se ejecutan los comandos.
Esa es la idea de autoexecute!!!
Salu22:)
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Re: Compilador escrito en AutoIt
Creo que estás hablando de usar un exe de AutoIT, que al fin y al cabo contiene el intérprete, para "compilar" un fuente de Autoit que puedes insertar con FileInstall.
Creo que él habla de hacer un compilador en todo regla, por ejemplo un compilador de C desde AutoIt.
No sé yo si seguirá con este proyecto, ahora está con lo de los descriptores de seguridad...
¿Qué Jonny? ¿cómo va lo del compilador? ¿vas a seguir con ello?
Creo que él habla de hacer un compilador en todo regla, por ejemplo un compilador de C desde AutoIt.
No sé yo si seguirá con este proyecto, ahora está con lo de los descriptores de seguridad...
¿Qué Jonny? ¿cómo va lo del compilador? ¿vas a seguir con ello?
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Re: Compilador escrito en AutoIt
¡Quita, quita! :).
Me asustaste con los ... ¿Lenguajes formales? ;).
No pensaba meterme en semejante cosa, porque no tengo casi idea de binario y mucho menos de lo que decías que había que saber, de lenguajes formales y todo eso...
Es que, vi algo de un compilador en el foro inglés, pero creo que era la misma pregunta que hice yo aquí: si se podría hacer en AutoIt, y seguramente preguntaría como :)
Es un proyecto muy muy muy chungo.
Supongo, que si es cosa de hacer un compilador, con su lenguaje propio de programación incluso, saldría más a cuenta buscar el código de uno escrito en C/C++ y modificarlo. Al menos, la parte del analizador sintáctico ;).
Salu2!
Me asustaste con los ... ¿Lenguajes formales? ;).
No pensaba meterme en semejante cosa, porque no tengo casi idea de binario y mucho menos de lo que decías que había que saber, de lenguajes formales y todo eso...
Es que, vi algo de un compilador en el foro inglés, pero creo que era la misma pregunta que hice yo aquí: si se podría hacer en AutoIt, y seguramente preguntaría como :)
Es un proyecto muy muy muy chungo.
Supongo, que si es cosa de hacer un compilador, con su lenguaje propio de programación incluso, saldría más a cuenta buscar el código de uno escrito en C/C++ y modificarlo. Al menos, la parte del analizador sintáctico ;).
Salu2!
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Re: Compilador escrito en AutoIt
Vas muy despistado con el binario, eso no es difícil y es una parte ultramínima aquí.
Aquí sale binario en el código máquina, que está en binario, pero eso sólo quiere decir que las instrucciones están codificadas en unos y ceros. Y ya está, básicamente ese es el binario que hay que saber para hacer un compilador.
De todas maneras en vez de codificar a pelo las operaciones de la CPU quizás sea mejor escribir el código en ensamblador y usar un ensamblador gratuito para generar el código máquina...
Te metes siempre en proyectos demasiado grandes y avanzados, normalmente te faltan bastantes pasos para poder llegar a algo así, ¿por qué no vas haciendo cosas algo más sencillas para afianzar conceptos más básicos? Te aseguro que no será un pérdida de tiempo.
Aquí sale binario en el código máquina, que está en binario, pero eso sólo quiere decir que las instrucciones están codificadas en unos y ceros. Y ya está, básicamente ese es el binario que hay que saber para hacer un compilador.
De todas maneras en vez de codificar a pelo las operaciones de la CPU quizás sea mejor escribir el código en ensamblador y usar un ensamblador gratuito para generar el código máquina...
Te metes siempre en proyectos demasiado grandes y avanzados, normalmente te faltan bastantes pasos para poder llegar a algo así, ¿por qué no vas haciendo cosas algo más sencillas para afianzar conceptos más básicos? Te aseguro que no será un pérdida de tiempo.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Re: Compilador escrito en AutoIt
Solo por curiosidad, el mismo Aut2Exe no se consideraria un compilador escrito en AutoIt? O no está en AutoIt?
AutoitAutoitAutoitAUTOIT!!!!!!
- BasicOs
- Site Admin
- Mensajes: 2091
- Registrado: 21 Nov 2006, 19:24
- Ubicación: El Internet - (Canarias, España)
- Contactar:
Re: Compilador escrito en AutoIt
Está hecho en alguna versión de C. Y tampoco es un compilador típico como el de C etc...
Realmente puedes fabricar un Exe que lea de un fichero "encriptado" y haga un efecto visual parecido, la diferencia entre programa compilado y programa interpretado no ESTA A LA VISTA ni se diferencia del usuario normal, ni es evidente para el usuario, ya que no sabe como funciona por dentro.
Está claro que lo que sabemos como funciona por dentro sabemos que es MUY diferente, pero preguntale al usuario que te dirá que ni idea, que su programa funciona ;)
Un poco filosófico esto...
Salu22:)
Realmente puedes fabricar un Exe que lea de un fichero "encriptado" y haga un efecto visual parecido, la diferencia entre programa compilado y programa interpretado no ESTA A LA VISTA ni se diferencia del usuario normal, ni es evidente para el usuario, ya que no sabe como funciona por dentro.
Está claro que lo que sabemos como funciona por dentro sabemos que es MUY diferente, pero preguntale al usuario que te dirá que ni idea, que su programa funciona ;)
Un poco filosófico esto...
Salu22:)
Re: Compilador escrito en AutoIt
Buen día estimados.
Consulta: ¡Cómo puedo compilar un archivo .au3 desde la linea de comandos de autoit.
Es decir, hacer un script y ordenar que se autocompile... algo así.
Ojalá me puedan ayudar.
Saludos
Consulta: ¡Cómo puedo compilar un archivo .au3 desde la linea de comandos de autoit.
Es decir, hacer un script y ordenar que se autocompile... algo así.
Ojalá me puedan ayudar.
Saludos
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Re: Compilador escrito en AutoIt
¿Qué es la "línea de comandos de AutoIt?
Si te refieres a compilar un au3 desde dentro de un programa Autoit puedes ejecutar el compilador Aut2exe.exe (o Aut2exe_x64.exe si quieres un exe de 64bits)
Los puedes ejecutar por ejemplo con la función Run().
Para compilar por ejemplo programa.au3 ejecutarías
Aut2exe /in programa.au3
Eso generará programa.exe. Se puede cambiar el nombre del exe con /out, también hay otras opciones para indicar icono, nivel de compresión, etc., si quieres ampliar te recomiendo mirar la ayuda. La línea de comando completa es esta:
Aut2exe.exe /in <infile.au3> [/out <outfile.exe>] [/icon <iconfile.ico>] [/comp 0-4] [/nopack] [x64] [/bin <binfile.bin>]
Si quieres que tu programa que compila otro programa vaya en cualquier ordenador tendrás que ejecutarlo en una máquina que tenga ya instalado AutoIt o llevarte con tu programa como mínimo Aut2exe.exe y AutoItSC.bin (o versiones 64bits). Opcionalmente upx.exe si quieres un exe comprimido y los iconos por defecto o uno tuyo si lo has personalizado.
Está todo en la instalación de Autoit en la carpeta Aut2exe
Saludos
Si te refieres a compilar un au3 desde dentro de un programa Autoit puedes ejecutar el compilador Aut2exe.exe (o Aut2exe_x64.exe si quieres un exe de 64bits)
Los puedes ejecutar por ejemplo con la función Run().
Para compilar por ejemplo programa.au3 ejecutarías
Aut2exe /in programa.au3
Eso generará programa.exe. Se puede cambiar el nombre del exe con /out, también hay otras opciones para indicar icono, nivel de compresión, etc., si quieres ampliar te recomiendo mirar la ayuda. La línea de comando completa es esta:
Aut2exe.exe /in <infile.au3> [/out <outfile.exe>] [/icon <iconfile.ico>] [/comp 0-4] [/nopack] [x64] [/bin <binfile.bin>]
Si quieres que tu programa que compila otro programa vaya en cualquier ordenador tendrás que ejecutarlo en una máquina que tenga ya instalado AutoIt o llevarte con tu programa como mínimo Aut2exe.exe y AutoItSC.bin (o versiones 64bits). Opcionalmente upx.exe si quieres un exe comprimido y los iconos por defecto o uno tuyo si lo has personalizado.
Está todo en la instalación de Autoit en la carpeta Aut2exe
Saludos
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Re: Compilador escrito en AutoIt
Gracias. Ximorro, excelente ayuda... eres un grande.
Saludos.
Saludos.
Re: Compilador escrito en AutoIt
Ximorro. Buen día.
Excúsame por ser tan cabeza dura, pero he intentado mucho tiempo compilar el script desde el editor con el ejemplo que me has puesto y no lo he conseguido. No había querido molestarte sin antes intentarlo una y mil veces, pero el tema ya me sobre pasó, no sé que estoy haciendo mal.
Te pongo el ejemplo de lo que quiero compilar a ver si me hechas una manito. Por favor.
ShellExecute ( "C:\Program Files (x86)\AutoIt3\Aut2Exe_x64", In "C:\Users\cristian\Documents\ALARMA RESOLUCIONES\Crear Causa Corte Suprema.au3")
Con esto lo que quiero es que el script "C:\Users\cristian\Documents\ALARMA RESOLUCIONES\Crear Causa Corte Suprema.au3" se compile en un exe de 64bit.
Por favor Ximorro dame una manito para superar esta inmensa tranca que me penado por tanto tiempo. Desde ya muchas gracias.
PD. Si alguien más me puede ayudar le estaré muy agradecido.
Excúsame por ser tan cabeza dura, pero he intentado mucho tiempo compilar el script desde el editor con el ejemplo que me has puesto y no lo he conseguido. No había querido molestarte sin antes intentarlo una y mil veces, pero el tema ya me sobre pasó, no sé que estoy haciendo mal.
Te pongo el ejemplo de lo que quiero compilar a ver si me hechas una manito. Por favor.
ShellExecute ( "C:\Program Files (x86)\AutoIt3\Aut2Exe_x64", In "C:\Users\cristian\Documents\ALARMA RESOLUCIONES\Crear Causa Corte Suprema.au3")
Con esto lo que quiero es que el script "C:\Users\cristian\Documents\ALARMA RESOLUCIONES\Crear Causa Corte Suprema.au3" se compile en un exe de 64bit.
Por favor Ximorro dame una manito para superar esta inmensa tranca que me penado por tanto tiempo. Desde ya muchas gracias.
PD. Si alguien más me puede ayudar le estaré muy agradecido.
Re: Compilador escrito en AutoIt
Así debería funcionar:
Saludos
Código: Seleccionar todo
ShellExecute("Aut2exe_x64.exe", ' /in "C:\Users\cristian\Documents\ALARMA RESOLUCIONES\Crear Causa Corte Suprema.au3"')
- ............................................
......................................
Re: Compilador escrito en AutoIt
+1000000000000000 de Gracias Dani, me salvaste el código..... Gracias por tu consejo resultó excelente.
Mil Gracias
Heroe
Te pasaste
Mil Gracias
Heroe
Te pasaste
Re: Compilador escrito en AutoIt
De nada
saludos
saludos
- ............................................
......................................