Blink емулятор x86-64, який обіцяє перевершити QEMU

blink-gcc

Скріншот запуску blink

Нещодавно з’явилася новина про те, що проект Blink розробляє новий емулятор процесора x86-64, що дозволяє запускати скомпільовані програми Linux статично у віртуальній машині з емульованим процесором.

Згадується, що еголовна мета проекту це надати можливість запускати програми Linux, скомпільовані для архітектури x86-64, на інших операційних системах (macOS, FreeBSD, NetBSD, OpenBSD) і на комп’ютерах з іншою апаратною архітектурою (x86, ARM, RISC-V, MIPS, PowerPC, s390x).

У репозиторії проекту вони описують blink наступним чином:

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

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

З точки зору функціональності, Blink виглядає як команда 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).

отримати моргання

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

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. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.