La primera versión de Blink, un emulador de sistemas x86-64 de alto rendimiento

Se ha publicado la primera versión significativa del proyecto Blink, que desarrolla un emulador de procesadores x86-64, permitiendo ejecutar aplicaciones Linux compiladas estática y dinámicamente en una máquina virtual con un procesador emulado. Con Blink, se pueden ejecutar programas Linux compilados para la arquitectura x86-64 en otros sistemas operativos compatibles con POSIX (macOS, FreeBSD, NetBSD, OpenBSD, Cygwin) y en hardware con arquitecturas diferentes (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. Solo se requiere libc (POSIX.1-2017) como dependencia.

En funcionalidad, Blink se asemeja al comando qemu-x86_64, pero se diferencia de QEMU por una ejecución más compacta y un aumento significativo en el rendimiento. Por ejemplo, el archivo ejecutable de Blink ocupa solo 221 KB (115 KB en la versión reducida) en comparación con los 4 MB de qemu-x86_64, y en pruebas de rendimiento, como la ejecución en el emulador GCC y la realización de operaciones matemáticas, supera a QEMU aproximadamente por el doble.

Para garantizar un alto rendimiento se utiliza un compilador JIT, que convierte sobre la marcha las instrucciones fuente en código de máquina para la plataforma de destino. Se admite la ejecución directa en el emulador de archivos ejecutables en formatos ELF, PE (Ejecutables Portables) y bin (ejecutables planos), compilados con las bibliotecas estándar de C como Cosmopolitan, Glibc y Musl. Se ha implementado soporte incorporado para 180 llamadas al sistema de Linux y emulación de aproximadamente 600 instrucciones del procesador x86, abarcando los conjuntos de instrucciones i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87, RDRND, RDSEED y RDTSCP.

Además, se está desarrollando una utilidad basada en Blink llamada blinkenlights, que proporciona una interfaz para visualizar el progreso de la ejecución del programa y analizar el contenido de la memoria. Esta utilidad puede utilizarse como depurador, admitiendo el modo de depuración inversa (Reverse-Debugging), que permite retroceder en la historia de ejecución y regresar a puntos ya ejecutados anteriormente. El proyecto es desarrollado por el autor de desarrollos como la biblioteca C Cosmopolitan, el puerto del mecanismo de aislamiento pledge para Linux y el sistema de ejecutables universales Redbean.

La primera versión de Blink, un emulador de sistemas x86-64 de alto rendimiento


Fuente: opennet.ru
Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster