Primer lanzamiento de Blink, un emulador x86-64 de alto rendimiento

Se ha publicado la primera versión importante del proyecto Blink, que desarrolla un emulador de procesador x86-64 que le permite ejecutar aplicaciones Linux creadas estática y dinámicamente en una máquina virtual con un procesador emulado. Con Blink, los programas de Linux compilados para la arquitectura x86-64 se pueden ejecutar en otros sistemas operativos compatibles con POSIX (macOS, FreeBSD, NetBSD, OpenBSD, Cygwin) y en hardware con otras arquitecturas de hardware (x86, ARM, RISC-V, MIPS , PowerPC, s390x). El código del proyecto está escrito en C (ANSI C11) y se distribuye bajo la licencia ISC. De las dependencias, solo se requiere libc (POSIX.1-2017).

En términos de funcionalidad, Blink se parece al comando qemu-x86_64, pero se diferencia de QEMU en un diseño más compacto y un aumento significativo del rendimiento. Por ejemplo, el archivo ejecutable de Blink ocupa solo 221 KB (con una compilación truncada: 115 KB) en lugar de 4 MB para qemu-x86_64, y en términos de rendimiento en algunas pruebas, como ejecutar en el emulador GCC y realizar operaciones matemáticas, supera a QEMU unas dos veces.

Para garantizar un alto rendimiento, se utiliza un compilador JIT, que convierte las instrucciones de origen en código de máquina para la plataforma de destino sobre la marcha. Se admite el lanzamiento directo en el emulador de archivos ejecutables en formato ELF, PE (Portable Executables) y bin (Flat ejecutable), compilados con las bibliotecas C estándar Cosmopolitan, Glibc y Musl. Soporte nativo implementado para 180 llamadas al sistema Linux y emulación de aproximadamente 600 instrucciones de procesador x86 que cubren i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87, RDRND, RDSEED conjuntos de instrucciones y RDTSCP.

Además, la utilidad blinkenlights se está desarrollando sobre la base de Blink, que proporciona una interfaz para visualizar la ejecución del programa y analizar el contenido de la memoria. La utilidad se puede utilizar como un depurador que admite el modo de depuración inversa (Depuración inversa) y le permite retroceder en el historial de ejecución y volver a un punto ejecutado anteriormente. El proyecto es desarrollado por el autor de desarrollos tales como la biblioteca C Cosmopolitan, un puerto del mecanismo de aislamiento de compromiso para Linux y el sistema de archivos ejecutable universal Redbean.

Primer lanzamiento de Blink, un emulador x86-64 de alto rendimiento


Fuente: opennet.ru

Añadir un comentario