Foi lançado o emulador Box64 0.4.0, destinado a executar programas Linux compilados para a arquitetura x86_64 em hardware com processadores ARM64, RISC-V e Loongarch64. O projeto foca fortemente na execução de aplicativos de jogos e oferece a possibilidade de rodar versões do Windows através do Wine e Proton. O código-fonte do projeto é escrito em C e está disponível sob a licença MIT.
Uma característica do projeto é a aplicação de um modelo híbrido de execução, onde a emulação é aplicada apenas ao código de máquina do próprio aplicativo e às bibliotecas específicas. As bibliotecas de sistema padrão, incluindo libc, libm, GTK, SDL, Vulkan e OpenGL, são substituídas por versões nativas das plataformas-alvo. Assim, as chamadas de biblioteca são executadas sem emulação, permitindo um aumento significativo de desempenho.
A emulação de código, para a qual não existem substituições nativas para a plataforma-alvo, é realizada usando a técnica de recompilação dinâmica (DynaRec), convertendo um conjunto de instruções de máquina em outro. Em comparação com a interpretação de instruções de máquina, a recompilação dinâmica demonstra um desempenho de 5 a 10 vezes melhor. alto desempenho.
Na nova versão:
- Apresentado um decodificador unificado de prefixos de código de operação (prefix opcode decoder), utilizado no interpretador e em todos os backends de recompilação dinâmica (DynaRec). O novo decodificador trata de maneira mais abrangente combinações raras de prefixos de opcodes e elimina a necessidade de 'gambiarras' específicas e duplicação de código no interpretador e nos backends do DynaRec. A reestruturação do decodificador resultou na remoção de código desnecessário, simplificando a manutenção da base de código e permitindo que o DynaRec trabalhe com combinações atípicas de prefixos de opcodes.
- Foi iniciada a implementação de um mecanismo para remover da memória blocos de código convertidos em código nativo, mas que não estão mais em uso. Essa otimização ajuda a reduzir o consumo de memória ao executar aplicativos que realizam muitas operações no início, como Steam e aplicativos que utilizam libcef.
- Apoio à arquitetura ARM64 foi aprimorado: um perfil de build foi implementado para a CPU NVIDIA GB10. No backend de recompilação dinâmica (DynaRec), a implementação de técnicas de otimização de loops continuou, como mover operações de atribuição de registradores XMM/YMM para fora do corpo do loop.
- Aumentou a estabilidade e o desempenho do backend de recompilação dinâmica para a arquitetura RISC-V. O lançamento do Steam, Proton e Wine foi garantido, mas para trabalhar com conteúdo DRM protegido, que requer emulação de chamadas de sistema do Windows, exige-se hardware com suporte a espaço de endereço de 48 bits (SV48) ou o uso de versões modificadas do Wine e Proton.
- O desenvolvimento do backend para a arquitetura Loongarch avançou significativamente, alcançando a possibilidade de executar Steam, Wine e Proton, mas ainda está atrás em funcionalidade do backend para sistemas ARM64. Para funcionamento, é necessário utilizar no kernel páginas de memória com tamanho de 4K (por padrão, o Loongarch geralmente é definido como 16K). O desempenho já é suficiente para executar jogos no CPU Loongarch 3A6000 (2,5 GHz com 4 núcleos físicos).

- A estabilidade do modo Box32, que proporciona suporte a arquivos executáveis de 32 bits no Box64, foi aumentada. Neste modo, observa-se uma maior estabilidade de funcionamento do Steam em todas as arquiteturas e a possibilidade de usar sobreposições de jogo em alguns jogos OpenGL.
Fonte: opennet.ru

