Первый выпуск Blink, высокопроизводительного эмулятора систем x86-64
Опубликован первый значительный выпуск проекта Blink, развивающего эмулятор процессоров x86–64, позволяющий запускать статически и динамически собранные Linux-приложения в виртуальной машине с эмулируемым процессором. При помощи Blink cобранные для архитектуры x86–64 Linux-программы можно запускать в других POSIX-совместимых операционных системах (macOS, FreeBSD, NetBSD, OpenBSD, Cygwin) и на оборудовании с другой аппаратной архитектурой (x86, ARM, RISC-V, MIPS, PowerPC, s390x). Код проекта написан на языке Си (ANSI C11) и распространяется под лицензией ISC. Из зависимостей требуется только libc (POSIX.1–2017).
По функциональности Blink напоминает команду qemu-x86_64, но отличается от QEMU более компактным исполнением и значительным приростом производительности. Например, исполняемый файл Blink занимает всего 221 КБ (при урезанной сборке — 115 КБ) вместо 4 МБ у qemu-x86_64, а по производительности в некоторых тестах, таких как запуск в эмуляторе GCC и выполнение математических операций, обгоняет QEMU примерно в два раза.
Для обеспечения высокой производительности применяется JIT-компилятор, на лету преобразующий исходные инструкции в машинный код для целевой платформы. Поддерживается прямой запуск в эмуляторе исполняемых файлов в форматах 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.
Дополнительно на базе Blink разрабатывается утилита blinkenlights, предоставляющая интерфейс для визуализации хода выполнения программы и анализа содержимого памяти. Утилита может применяться в качестве отладчика, поддерживающего режим реверсивной отладки (Reverse-Debugging) и позволяющего перемещаться назад в истории выполнения и возвращаться к уже ранее выполненной точке. Проект развивает автор таких разработок, как Си-библиотека Cosmopolitan, порт механизма изоляции pledge для Linux и система универсальных исполняемых файлов Redbean.
Источник: http://www.opennet.ru/opennews/art.shtml? num=59247
© OpenNet