Primeira versión de Blink, un emulador x86-64 de alto rendemento

Publicouse a primeira versión significativa do proxecto Blink, que desenvolve un emulador de procesadores x86-64 que permite executar aplicacións Linux construídas de forma estática e dinámica nunha máquina virtual cun procesador emulado. Con Blink, os programas Linux compilados para a arquitectura x86-64 pódense executar noutros sistemas operativos compatibles con POSIX (macOS, FreeBSD, NetBSD, OpenBSD, Cygwin) e en equipos con outras arquitecturas de hardware (x86, ARM, RISC-V, MIPS). , PowerPC, s390x). O código do proxecto está escrito en linguaxe C (ANSI C11) e distribúese baixo a licenza ISC. Das dependencias, só se require libc (POSIX.1-2017).

En termos de funcionalidade, Blink é semellante ao comando qemu-x86_64, pero difire de QEMU polo seu deseño máis compacto e un aumento significativo do rendemento. Por exemplo, o executable Blink ocupa só 221 KB (cunha compilación reducida - 115 KB) en lugar de 4 MB para qemu-x86_64, e nalgunhas probas, como executar no emulador GCC e realizar operacións matemáticas, supera QEMU unhas dúas veces.

Para garantir un alto rendemento, úsase un compilador JIT, que converte as instrucións fonte sobre a marcha en código máquina para a plataforma de destino. O emulador admite o lanzamento directo de ficheiros executables en formatos ELF, PE (Executables portátiles) e bin (executable plano), compilados coas bibliotecas C estándar Cosmopolitan, Glibc e Musl. Soporte integrado para 180 chamadas de sistema Linux e emulación de preto de 600 instrucións de procesador x86 que abarcan i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87, RDSEED, RDRND conxuntos de instrucións e RDTSCP.

Ademais, baseada en Blink, estase a desenvolver a utilidade blinkenlights, que proporciona unha interface para visualizar o progreso da execución do programa e analizar o contido da memoria. A utilidade pódese usar como un depurador que admite o modo de depuración inversa e permite retroceder no historial de execución e volver a un punto executado previamente. O proxecto está desenvolvido polo autor de desenvolvementos como a biblioteca Cosmopolitan C, un porto do mecanismo de illamento de promesas para Linux e o sistema de ficheiros executable universal Redbean.

Primeira versión de Blink, un emulador x86-64 de alto rendemento


Fonte: opennet.ru

Engadir un comentario