Compilador escrito en AutoIt

Tus preguntas. Algoritmos o Grupos de Comandos formando Programas Escripts.
Responder
Jonny
Profesional del Autoit
Mensajes: 1042
Registrado: 30 Jun 2008, 20:08

Compilador escrito en AutoIt

Mensaje por Jonny »

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!
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Compilador escrito en AutoIt

Mensaje por Ximorro »

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.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Jonny
Profesional del Autoit
Mensajes: 1042
Registrado: 30 Jun 2008, 20:08

Re: Compilador escrito en AutoIt

Mensaje por Jonny »

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!
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Compilador escrito en AutoIt

Mensaje por Ximorro »

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 :smt003

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)
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2091
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Compilador escrito en AutoIt

Mensaje por BasicOs »

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. ;)
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Compilador escrito en AutoIt

Mensaje por Ximorro »

¿?
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)
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2091
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Compilador escrito en AutoIt

Mensaje por BasicOs »

Ximorro escribió:¿?
Creo que estás hablando de "decompilar". Él dice lo contrario, hacer un compilador, y no necesariamente de AutoIt, sino EN AutoIt.
No es eso lo que quiero decir
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:)
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Compilador escrito en AutoIt

Mensaje por Ximorro »

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?
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Jonny
Profesional del Autoit
Mensajes: 1042
Registrado: 30 Jun 2008, 20:08

Re: Compilador escrito en AutoIt

Mensaje por Jonny »

¡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!
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Compilador escrito en AutoIt

Mensaje por Ximorro »

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.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Avatar de Usuario
Bits
Mensajes: 6
Registrado: 24 Oct 2012, 18:50

Re: Compilador escrito en AutoIt

Mensaje por Bits »

Solo por curiosidad, el mismo Aut2Exe no se consideraria un compilador escrito en AutoIt? O no está en AutoIt?
AutoitAutoitAutoitAUTOIT!!!!!!
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2091
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Compilador escrito en AutoIt

Mensaje por BasicOs »

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:)
kotoqu
Aprendiz de Mago
Mensajes: 46
Registrado: 11 Oct 2008, 01:40

Re: Compilador escrito en AutoIt

Mensaje por kotoqu »

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
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Compilador escrito en AutoIt

Mensaje por Ximorro »

¿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
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
kotoqu
Aprendiz de Mago
Mensajes: 46
Registrado: 11 Oct 2008, 01:40

Re: Compilador escrito en AutoIt

Mensaje por kotoqu »

Gracias. Ximorro, excelente ayuda... eres un grande.

Saludos.
kotoqu
Aprendiz de Mago
Mensajes: 46
Registrado: 11 Oct 2008, 01:40

Re: Compilador escrito en AutoIt

Mensaje por kotoqu »

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.
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: Compilador escrito en AutoIt

Mensaje por Dany »

Así debería funcionar:

Código: Seleccionar todo

ShellExecute("Aut2exe_x64.exe", ' /in "C:\Users\cristian\Documents\ALARMA RESOLUCIONES\Crear Causa Corte Suprema.au3"')
Saludos :smt027
  • ............................................Imagen
    ......................................Imagen
kotoqu
Aprendiz de Mago
Mensajes: 46
Registrado: 11 Oct 2008, 01:40

Re: Compilador escrito en AutoIt

Mensaje por kotoqu »

+1000000000000000 de Gracias Dani, me salvaste el código..... Gracias por tu consejo resultó excelente.

Mil Gracias
Heroe
Te pasaste
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: Compilador escrito en AutoIt

Mensaje por Dany »

De nada :smt023 :smt027

saludos
  • ............................................Imagen
    ......................................Imagen
Responder