Blink эмулятор x86-64, который обещает превзойти QEMU

мигание-gcc

Скриншот запуска мигания

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

Отмечается, что eГлавная цель проект заключается в обеспечении возможности запуска программ Linux, скомпилированных для архитектуры x86-64, в других операционных системах. (macOS, FreeBSD, NetBSD, OpenBSD) и на компьютерах с другой аппаратной архитектурой (x86, ARM, RISC-V, MIPS, PowerPC, s390x).

В репозитории проекта блинк описывают так:

blink — это виртуальная машина, которая запускает статически скомпилированные программы x86-64-linux в различных операционных системах и аппаратных архитектурах. Он предназначен для того, чтобы делать то же самое, что и команда qemu-x86_64, за исключением того, что (а) вместо 4-мегабайтного двоичного файла Blink занимает всего ~ 160 КБ; и (б) Blink в 2 раза быстрее, чем Qemu в некоторых тестах, таких как эмуляция GCC. Компромисс заключается в том, что у Blink не так много функций, как у Qemu. Blink идеально подходит, если вам нужна очень маленькая виртуальная машина, которая намного быстрее запускает эфемерные программы. Для получения более подробной информации о мотивах использования этого инструмента, пожалуйста, прочитайте https://justine.lol/ape.html.

Стоит отметить, что проект разрабатывается автором таких разработок, как библиотека Cosmopolitan C, порт механизма изоляции коммитов для Linux и универсальной исполняемой файловой системы Redbean.

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

Чтобы обеспечить высокую производительность, используется JIT-компилятор, который на лету преобразует исходные инструкции в машинный код для целевой платформы (пока только x86_64 и aarch64 поддерживают JIT).

Поддерживается прямой запуск на эмуляторе исполняемых файлов в форматах ELF, PE (Portable Executables) и bin (Flat Executable), скомпилированных с помощью стандартных C-библиотек Cosmopolitan, Glibc и Musl.

Кроме того, Также выделяется интегрированная поддержка более ста обращений к системе Linux, включая fork() и clone(). Поддерживается эмуляция наборов инструкций i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87, RDRND, RDSEED и RDTSCP.

Кроме того, проект разрабатывает утилиту blinkenlights, который предоставляет интерфейс для отладки программ на разных платформах, визуализации выполнения программы и анализа содержимого памяти. Особенностью отладчика является поддержка режима обратной отладки (Reverse Debugging), который позволяет вернуться в историю выполнения и вернуться к ранее выполненной точке.

blinkenlights — это интерфейс TUI, который можно использовать для отладки программ x86_64-linux на всех платформах. В отличие от GDB, Blinkenlights фокусируется на визуализации выполнения программы. Он использует символы UNICODE IBM Code Page 437 для отображения бинарных панелей памяти, которые меняются по мере прохождения ассемблерного кода вашей программы. Эти панели памяти можно прокручивать и увеличивать колесиком мыши. Blinkenlights также поддерживает обратную отладку, где прокрутка колесика на экране сборки позволяет перематывать историю выполнения назад.

Наконец, тем, кто хочет узнать больше об этом проекте, следует знать, что код проекта написан на языке C (ANSI C11) и распространяется под лицензией ISC. Из зависимостей требуется только libc (POSIX.1-2017).

Получить Блинк

Для тех, кто заинтересован в возможности попробовать мигание, они должны знать, что его компиляция чрезвычайно проста, им нужно только получить исходный код, они могут сделать это по следующей ссылке или из терминала, введя следующую команду :

git https://github.com/jart/blink.git

И готово с этим, вам просто нужно войти в каталог blik и скомпилировать:

cd blink

make -j4

Если вы хотите узнать больше о том, как работает Blink, вы можете сделать это с по следующей ссылке.


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.