¿Es posible convertir programas de Python a un lenguaje de ensamblaje estándar de microprocesador como IEEE-694? La sintaxis de montaje está cerca de this one o esta otra: http://www.ethicalhacker.net/content/view/152/2/Python programa en un conjunto estándar?
Respuesta
Compile python to C, a continuación, utilizar un compilador de C de su elección para bajarlo hasta el montaje.
Como alternativa, utilice PyPy, especificando LLVM como destino, y use LLVM Static Compiler para obtener el lenguaje de ensamblaje para su arquitectura de destino.
No sé cómo usar LLVM para obtener un ensamblaje básico y estándar como IEEE-694. – Academia
Entiendo la idea del "ensamblaje estándar", pero ¿no es eso esencialmente lo que es el bytecode LLVM? –
Dado que Python es un lenguaje de tipado dinámico, esto solo sería posible si el programa ensamblador utilizara el entorno/biblioteca de tiempo de ejecución de Python para obtener objetos dinámicamente.
Por lo tanto, solo sería posible con algunos gastos generales.
Pero hay RPython del proyecto PyPy. Es un subconjunto restringido del lenguaje Python (ya no se tipea de forma dinámica y carece de la mayoría de los módulos de la biblioteca estándar de Python). Los programas RPython se pueden traducir a código máquina (AFAIK genera código C como código intermedio).
Python en sí mismo genera un código intermedio para su máquina virtual. Si desea ver este código, use el módulo dis de la biblioteca estándar de Python. Esto genera una representación similar a un ensamblaje de su función de Python. Tenga en cuenta que un microprocesador "real" no podría usar esto y que el resultado podría cambiar con la versión de Python que está utilizando.
Quiero obtener un ensamblaje muy básico y de bajo nivel (sin macros). No lo ejecutaré en un microprocesador real. – Academia
No de la misma manera que C, FORTRAN, COBOL, etc. Los lenguajes que admiten el cálculo lambda o la administración automática de la memoria no se pueden compilar directamente al ensamblaje. Sin embargo, se puede proporcionar un intérprete en microcódigo o en un programa de arranque para cerrar la brecha y permitir Python "compilado", LISP, etc. (Algunas operaciones, como la recolección de basura, todavía se llevan a cabo dentro del intérprete integrado empaquetado en el compilado binario.)
Gracias por inf. En realidad, estoy pensando en compilar python a C, luego desmontar con GDB. Pero aún estoy tratando de encontrar algo mejor. – Academia
- 1. Obligar a la salida estándar de otro programa mediante Python
- 2. ¿Cómo agregar un conjunto estándar de declaraciones 'using' en VS?
- 3. cómo puedo obtener un estándar :: conjunto de claves para un estándar :: map
- 4. Conjunto multidimensional en Python
- 5. entrada estándar opcional en Python con argparse
- 6. valores Anexar a un conjunto en Python
- 7. Python: cómo permitir duplicados en un conjunto?
- 8. Ejecutar programa python desde otro programa python (con ciertos requisitos)
- 9. Reiniciar un programa de Python
- 10. Terminar un programa python multihilo
- 11. programa en Python inicia
- 12. modificar un programa python en ejecución
- 13. Salida elegante de un programa en Python?
- 14. python - beginner - integrando optparse en un programa
- 15. Cómo obtener el primer elemento de un estándar :: conjunto
- 16. Python: detectar duplicados usando un conjunto
- 17. salida estándar sin búfer en Python (como en Pitón -u) desde el programa
- 18. operador del conjunto "en" Python
- 19. Python: imprimir un archivo de salida estándar
- 20. Ejecutar programa desde el conjunto de bytes
- 21. Python Extraiga el conjunto del conjunto
- 22. Python: miembros de acceso de un conjunto
- 23. Conjunto estallar (Python)
- 24. ¿Cómo se transforma un programa python .py en un programa ejecutable en Ubuntu?
- 25. compilando un programa python que usa pygame en un ejecutable
- 26. ¿Cómo convierto un programa python en un archivo .egg?
- 27. Terminación de un programa de Python
- 28. ¿Cómo ejecuto un programa de Python?
- 29. ¿Puede un programa escrito en Python ser AppleScripted?
- 30. ¿Cómo cerrar un programa usando python?
He intentado mucho. Encontré softwares como LLVM pero el resultado no fue el esperado. – Academia
Eche un vistazo al proyecto [Python on a chip] (http://code.google.com/p/python-on-a-chip/). –
¿cuál es el problema que en realidad estás tratando de resolver? – SingleNegationElimination