Première version de Blink, un émulateur x86-64 hautes performances

La première version importante du projet Blink a été publiée, développant un émulateur de processeurs x86-64 qui vous permet d'exécuter des applications Linux construites de manière statique et dynamique dans une machine virtuelle avec un processeur émulé. Avec Blink, les programmes Linux compilés pour l'architecture x86-64 peuvent être exécutés sur d'autres systèmes d'exploitation compatibles POSIX (macOS, FreeBSD, NetBSD, OpenBSD, Cygwin) et sur des équipements dotés d'autres architectures matérielles (x86, ARM, RISC-V, MIPS). , PowerPC, s390x). Le code du projet est écrit en langage C (ANSI C11) et est distribué sous licence ISC. Parmi les dépendances, seule la libc (POSIX.1-2017) est requise.

En termes de fonctionnalités, Blink est similaire à la commande qemu-x86_64, mais diffère de QEMU par sa conception plus compacte et son augmentation significative des performances. Par exemple, l'exécutable Blink n'occupe que 221 Ko (avec une version allégée - 115 Ko) au lieu de 4 Mo pour qemu-x86_64, et dans certains tests, comme l'exécution dans l'émulateur GCC et l'exécution d'opérations mathématiques, il surpasse QEMU d'environ deux fois.

Pour garantir des performances élevées, un compilateur JIT est utilisé, qui convertit les instructions source à la volée en code machine pour la plate-forme cible. L'émulateur prend en charge le lancement direct de fichiers exécutables aux formats ELF, PE (Portable Executables) et bin (Flat executable), compilés avec les bibliothèques C standards Cosmopolitan, Glibc et Musl. Prise en charge intégrée de 180 appels système Linux et émulation d'environ 600 instructions de processeur x86 couvrant i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87, RDRND, RDSEED jeux d'instructions et RDTSCP.

De plus, basé sur Blink, l'utilitaire Blinkenlights est en cours de développement, qui fournit une interface permettant de visualiser la progression de l'exécution du programme et d'analyser le contenu de la mémoire. L'utilitaire peut être utilisé comme un débogueur prenant en charge le mode de débogage inversé et vous permettant de revenir en arrière dans l'historique d'exécution et de revenir à un point précédemment exécuté. Le projet est développé par l'auteur de développements tels que la bibliothèque Cosmopolitan C, un portage du mécanisme d'isolation des promesses pour Linux et le système de fichiers exécutables universels Redbean.

Première version de Blink, un émulateur x86-64 hautes performances


Source: opennet.ru

Ajouter un commentaire