Вышел эмулятор процессоров x86-64 Blink 1.0

p3d0szm0al1j3bsanfzps2bhjdc.png

Состоялся релиз открытого проекта Blink 1.0. Это эмулятор процессоров x86–64, позволяющий запускать статически и динамически собранные Linux-приложения в виртуальной машине.

При помощи проекта Blink собранные для архитектуры x86–64 Linux-приложения можно запускать в других POSIX-совместимых операционных системах (macOS, FreeBSD, NetBSD, OpenBSD, Cygwin) и на оборудовании с другой аппаратной архитектурой (x86, ARM, RISC-V, MIPS, PowerPC, s390x).

Код проекта Blink написан на языке C (ANSI C11) и распространяется под лицензией ISC. Из зависимостей для работы с эмулятором требуется только установка libc (POSIX.1–2017).

Эксперты OpenNET пояснили, что по функциональности Blink напоминает qemu-x86_64, но отличается от проекта QEMU более компактным исполнением и значительным приростом производительности. Например, исполняемый файл Blink имеет размер 221 КБ вместо 4 МБ у qemu-x86_64, а по производительности в некоторых тестах, таких как запуск в эмуляторе GCC и выполнение математических операций, Blink обгоняет QEMU примерно в два раза.

cahctgvjh43nuqzvvx64lglepy4.png

Для обеспечения высокой производительности в Blink применяется JIT-компилятор, на лету преобразующий исходные инструкции в машинный код для целевой платформы.

Blink поддерживает прямой запуск исполняемых файлов в форматах ELF, PE (Portable Executables) и bin (Flat executable), собранных со стандартными Си-библиотеками Cosmopolitan, Glibc и Musl. В В проекте реализована встроенная поддержка 180 системных вызовов Linux и эмуляция около 600 процессорных инструкций x86, включая наборы инструкций i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87, RDRND, RDSEED и RDTSCP.

© Habrahabr.ru