Перший випуск Blink, високопродуктивного емулятора систем x86-64

Опубліковано перший значний випуск проекту Blink, що розвиває емулятор процесорів x86-64, що дозволяє запускати статично та динамічно зібрані Linux-програми у віртуальній машині з емульованим процесором. За допомогою Blink зібрані для архітектури 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 та RDTSCP.

Додатково на базі Blink розробляється утиліта blinkenlights, що надає інтерфейс для візуалізації ходу виконання програми та аналізу вмісту пам'яті. Утиліта може застосовуватися як відладчик, що підтримує режим реверсивної налагодження (Reverse-Debugging) і дозволяє переміщатися назад в історії виконання та повертатися до вже раніше виконаної точки. Проект розвиває автор таких розробок, як Сі-бібліотека Cosmopolitan, порт механізму ізоляції pledge для Linux та система універсальних файлів Redbean, що виконуються.

Перший випуск Blink, високопродуктивного емулятора систем x86-64


Джерело: opennet.ru

Додати коментар або відгук