webminal org online kali jslinux emulator cfg bellard javascript linux emulation

org - ¿Cómo funciona el emulador de Linux en Javascript de Fabrice Bellard?



webminal (2)

Al principio, también pensé que esto era solo un emulador de terminal que te conectaba a una máquina virtual, pero no es así. Si observa las conexiones de red, puede ver que, después del inicio, ya no se transmiten datos.

Entonces es real

Una CPU no es algo mágico; de hecho, todo lo que hace es leer los bytes de la memoria y modificar la RAM de acuerdo con lo que significan los comandos.

En este caso, el emulador de CPU se basa en el código qemu. Lo que hace es crear una serie de funciones donde el índice es el siguiente byte en la PC (contador de programa).

Ahora todo lo que necesita es una simple distribución de Linux que no necesita comandos de CPU exóticos como aritmética de coma flotante o código MMX y voila.

Lo que es interesante es la velocidad de la bestia. Todo el asunto es un poco lento, pero luego, es JavaScript en un navegador.

Conclusión: Impresionante. No puedo esperar para ver un emulador C64 :-)

Hoy tuve un momento asombroso, cuando vi el emulador de Linux en Javascript: http://bellard.org/jslinux/

Compila programas C, tiene vi y emacs, admite todos los comandos de shell, etc., etc.

¿Como funciona?


Ver http://www.quora.com/CPU-Emulation/How-does-bellard-org-jslinux-work

Explicación simplificada

jslinux es esencialmente una computadora completa implementada en software, específicamente JavaScript. Esto es, por supuesto, conocido como un emulador. Esta versión particular está configurada para ejecutar Linux, pero en teoría podría ejecutar otros sistemas operativos.

El emulador (JavaScript, ~ 90 KB minificado, ~ 7000 líneas formateado) se carga en el navegador. Una versión de Linux se compiló previamente en código máquina para que un procesador x86 se cargue y se copie en una gran matriz de enteros que actúa como la memoria RAM emulada de la computadora. La CPU del emulador se apunta a la primera instrucción del código máquina y se le indica que comience a interpretar las instrucciones (como leer / escribir RAM, realizar operaciones aritméticas y lógicas, saltar a diferentes instrucciones, etc.). A veces escribirá datos (como el registro del sistema o un símbolo del sistema de shell) en el "terminal" a través de otro código JavaScript que simula un puerto serie y un terminal utilizando el navegador DOM. Las pulsaciones de teclas también se envían a Linux a través de este puerto serie simulado ...