bytecode Python, el intérprete y máquina virtual
-
30-09-2019 - |
Pregunta
Este es realmente un gran problema y estoy en su mayoría en busca de recursos donde puedo aprender más acerca de lo siguiente.
Sé que el intérprete de Python está escrito en C y produce código de bytes para ser ejecutado en la máquina virtual de Python también escrito en C (¿verdad?). Mi pregunta es ¿sería posible llevar a cabo ambos en pitón en sí? Creo que a dónde voy con esto es la posibilidad (técnica) de escribir algo así como el sistema operativo en el pitón, particularmente SIN estáticamente compilar algo?
Si he entendido bien, pitón no tiene un ensamblador que tendría que ser escrita así en Python. ¿Son estas cosas algo que podría técnicamente (factible?) Puede hacer? ¿O sería el tipado dinámico del pitón plantear algún tipo de problema?
Me sabe un poco acerca de la arquitectura del microprocesador, el montaje y el código máquina, qué aprende recientes EE Grad en la escuela. Pero me pierdo mirar el cuadro completo de lenguajes de alto nivel como Python.
Solución
En primer lugar, tendría que escribir un compilador de Python (no intérprete), en cualquier idioma, preferentemente Python. tendría que ser ejecutado throught el intérprete de la primera ejecución del compilador.
A continuación, se compilará su compilador consigo mismo, lo que lleva a un compilador nativo que no necesita intérprete.
A continuación, puede utilizar el compilador para la compilación de cualquier Python a código nativo.
Este proceso se denomina arranque, y es utilizado por muchos, si no la mayoría, los principales compiladores para muchos idiomas.
Puede leer más sobre este proceso aquí: http://en.wikipedia.org / wiki / Bootstrapping_ (compiladores)
En cuanto a la creación de un sistema operativo, que tendría que aplicar, como mínimo, un intérprete de Python, si se quiere evitar el código compilado. Si se escribe un intérprete de Python como un microkernel, podría escribir el resto del sistema operativo en Python. (Edit: Sólo inadvertidamente descrito Cleese, que Jiaaro menciona:))
Otros consejos
Compilador, no intérprete. Pero lo que buscas es PyPy .
En cuanto a la cuestión implementación del sistema operativo, se necesita un sistema de lenguaje de programación para implementar un sistema operativo. Hacerlo todo en Python puro no será posible a menos que se te ocurra un ensamblador de Python y Python convertido a los binarios ejecutables directamente sin VM sea necesario.
Si quieres código en el montaje y obtener pitón de montar por ti, echar un vistazo a poco pasada de moda y experimental pyasm .