Primeira versão do Blink, um emulador x86-64 de alto desempenho

O primeiro lançamento significativo do projeto Blink foi publicado, desenvolvendo um emulador de processadores x86-64 que permite executar aplicativos Linux construídos de forma estática e dinâmica em uma máquina virtual com um processador emulado. Com o Blink, os programas Linux compilados para a arquitetura x86-64 podem ser executados em outros sistemas operacionais compatíveis com POSIX (macOS, FreeBSD, NetBSD, OpenBSD, Cygwin) e em equipamentos com outras arquiteturas de hardware (x86, ARM, RISC-V, MIPS , PowerPC, s390x). O código do projeto é escrito em linguagem C (ANSI C11) e é distribuído sob licença ISC. Das dependências, apenas libc (POSIX.1-2017) é necessária.

Em termos de funcionalidade, Blink é semelhante ao comando qemu-x86_64, mas difere do QEMU por seu design mais compacto e aumento significativo de desempenho. Por exemplo, o executável Blink ocupa apenas 221 KB (com uma compilação simplificada - 115 KB) em vez de 4 MB para qemu-x86_64, e em alguns testes, como rodar no emulador GCC e realizar operações matemáticas, ele supera QEMU em cerca de duas vezes.

Para garantir alto desempenho, é usado um compilador JIT, que converte instruções de origem em tempo real em código de máquina para a plataforma de destino. O emulador suporta o lançamento direto de arquivos executáveis ​​​​nos formatos ELF, PE (Portable Executables) e bin (Flat executável), compilados com as bibliotecas C padrão Cosmopolitan, Glibc e Musl. Suporte integrado para 180 chamadas de sistema Linux e emulação de cerca de 600 instruções de processador x86 cobrindo i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87, RDRND, RDSEED conjuntos de instruções e RDTSCP.

Além disso, baseado no Blink, está sendo desenvolvido o utilitário blinkenlights, que fornece uma interface para visualizar o andamento da execução do programa e analisar o conteúdo da memória. O utilitário pode ser usado como um depurador que suporta o modo de depuração reversa e permite voltar no histórico de execução e retornar a um ponto executado anteriormente. O projeto é desenvolvido pelo autor de desenvolvimentos como a biblioteca Cosmopolitan C, uma porta do mecanismo de isolamento de penhores para Linux e o sistema de arquivos executáveis ​​​​universal Redbean.

Primeira versão do Blink, um emulador x86-64 de alto desempenho


Fonte: opennet.ru

Adicionar um comentário