Blink, um emulador x86-64 que promete superar o QEMU

Conheça o Blink, um emulador x86-64 que promete superar o QEMU. Confira os detalhes desse novo emulador de processador x86-64.

Recentemente, surgiram informações de que o projeto Blink está desenvolvendo um novo emulador de processador x86-64 que permite executar aplicativos Linux compilados estaticamente em uma máquina virtual com um processador emulado.

Blink, um emulador x86-64 que promete superar o QEMU

Blink, um emulador x86-64 que promete superar o QEMU
Blink, um emulador x86-64 que promete superar o QEMU

Menciona-se que o principal objetivo do projeto é fornecer a capacidade de executar programas Linux compilados para a arquitetura x86-64 em outros sistemas operacionais (macOS, FreeBSD, NetBSD, OpenBSD) e em computadores com uma arquitetura de hardware diferente (x86, ARM, RISC-V, MIPS, PowerPC, s390x).

No repositório do projeto, eles descrevem o blink da seguinte forma:

“blink é uma máquina virtual que executa programas x86-64-linux compilados estaticamente em diferentes sistemas operacionais e arquiteturas de hardware. Ele foi projetado para fazer a mesma coisa que o comando qemu-x86_64, exceto que (a) em vez de ser um binário de 4 MB, o Blink ocupa apenas ~ 160 kb; e (b) Blink é 2x mais rápido que Qemu em alguns benchmarks, como emular GCC. A desvantagem é que o Blink não tem tantos recursos quanto o Qemu. O Blink é perfeito quando você deseja uma máquina virtual extremamente pequena e que execute programas efêmeros muito mais rapidamente. Para mais detalhes sobre as motivações para esta ferramenta, leia https://justine.lol/ape.html.”

Vale ressaltar que o projeto é desenvolvido pelo autor de desenvolvimentos como a biblioteca Cosmopolitan C, uma porta do mecanismo de isolamento de compromisso para Linux e o sistema de arquivos executáveis ​​universal Redbean.

Em termos de funcionalidade, o Blink se assemelha ao comando qemu-x86_64, mas difere do QEMU em um design mais compacto e desempenho significativamente aumentado.

Por exemplo, o arquivo executável do Blink tem apenas 157 KB em vez de 4 MB para qemu-x86_64 e, em termos de desempenho no teste executado no emulador GCC, o Blink supera o QEMU duas vezes.

Para garantir alto desempenho, é usado um compilador JIT, que converte instruções de origem em código de máquina para a plataforma de destino em tempo real (até agora, apenas x86_64 e aarch64 suportam JIT).

Lançamento direto no emulador de arquivos executáveis ​​nos formatos ELF, PE (Executáveis ​​Portáteis) e bin (Executáveis ​​Planos), compilados com as bibliotecas C padrão Cosmopolitan, Glibc e Musl são suportados.

Além disso, também se destaca que possui suporte integrado para mais de uma centena de chamadas do sistema Linux, incluindo fork() e clone().

A emulação dos conjuntos de instruções i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87, RDRND, RDSEED e RDTSCP é suportada.

Além disso, o projeto está desenvolvendo o utilitário blinkenlights, que fornece uma interface para depurar programas em diferentes plataformas, visualizar a execução do programa e analisar o conteúdo da memória.

Um recurso do depurador é o suporte para o modo de depuração reversa (Reverse Debugging), que permite voltar no histórico de execução e retornar a um ponto executado anteriormente.

“blinkenlights é uma interface TUI que pode ser usada para depurar programas x86_64-linux em todas as plataformas. Ao contrário do GDB, o Blinkenlights se concentra em visualizar a execução do programa. Ele usa caracteres UNICODE IBM Code Page 437 para exibir painéis de memória binária, que mudam à medida que você percorre o código de montagem de seu programa. Esses painéis de memória podem ser rolados e ampliados com a roda do mouse. Blinkenlights também suporta depuração reversa, onde rolar a roda na tela de montagem permite retroceder o histórico de execução.”

Finalmente, para os interessados ​​em saber mais sobre este projeto, devem saber que o código do projeto é escrito em C (ANSI C11) e é distribuído sob a licença ISC. Das dependências, apenas libc (POSIX.1-2017) é necessário.

Como instalar o blink no Linux

Para aqueles que estão interessados ​​em experimentar o blink, devem saber que a sua compilação é extremamente simples, apenas têm de obter o código fonte do mesmo, podem fazê-lo a partir do seguinte link ou a partir de um terminal digitando o seguinte comando:
git https://github.com/jart/blink.git

E pronto, basta entrar no diretório blik e compilar:
cd blink
make -j4

Se você quiser saber mais sobre como o Blink funciona, você pode fazê-lo no seguinte endereço.

Sobre o Edivaldo Brito

Edivaldo Brito é analista de sistemas, gestor de TI, blogueiro e também um grande fã de sistemas operacionais, banco de dados, software livre, redes, programação, dispositivos móveis e tudo mais que envolve tecnologia.

Deixe um comentário

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.