Pierwsza wersja Blink, wydajnego emulatora systemów x86-64

Opublikowano pierwszą znaczącą wersję projektu Blink, rozwijającego emulator procesorów x86-64, umożliwiającego uruchamianie statycznie i dynamicznie skompilowanych aplikacji Linux w wirtualnej maszynie z emulowanym procesorem. Dzięki Blink, skompilowane dla architektury x86-64 programy Linux można uruchamiać w innych systemach operacyjnych zgodnych z POSIX (macOS, FreeBSD, NetBSD, OpenBSD, Cygwin) oraz na sprzęcie o innej architekturze (x86, ARM, RISC-V, MIPS, PowerPC, s390x). Kod projektu został napisany w języku C (ANSI C11) i jest udostępniany na licencji ISC. Wymagana jest tylko libc (POSIX.1-2017).

Pod względem funkcjonalności, Blink przypomina polecenie qemu-x86_64, ale różni się od QEMU bardziej zwartym wykonaniem oraz znacznym przyrostem wydajności. Na przykład, plik wykonywalny Blink zajmuje zaledwie 221 KB (w skróconej wersji — 115 KB) w porównaniu do 4 MB w przypadku qemu-x86_64, a w niektórych testach, takich jak uruchamianie w emulatorze GCC i wykonywanie operacji matematycznych, przewyższa QEMU prawie dwukrotnie.

Aby zapewnić wysoką wydajność, zastosowano kompilator JIT, który na bieżąco przekształca oryginalne instrukcje w kod maszynowy dla docelowej platformy. Obsługiwane jest bezpośrednie uruchamianie w emulatorze plików wykonywalnych w formatach ELF, PE (Portable Executables) oraz bin (Flat executable), skompilowanych z wykorzystaniem standardowych bibliotek C Cosmopolitan, Glibc i Musl. Zrealizowano wbudowane wsparcie dla 180 wywołań systemowych Linux oraz emulację około 600 instrukcji procesora x86, obejmujących zestawy instrukcji i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87, RDRND, RDSEED i RDTSCP.

Dodatkowo na bazie Blink rozwijana jest narzędzie blinkenlights, oferujące interfejs do wizualizacji przebiegu programu i analizy zawartości pamięci. Narzędzie to może być stosowane jako debugger, wspierający tryb odwróconego debugowania (Reverse-Debugging) i umożliwiający cofanie się w historii wykonania oraz powracanie do wcześniej wykonanych punktów. Projekt rozwija autor takich projektów, jak biblioteka C Cosmopolitan, port mechanizmu izolacji pledge dla Linux oraz system uniwersalnych plików wykonywalnych Redbean.

Pierwsza wersja Blink, wydajnego emulatora systemów x86-64


Źródło: opennet.ru
Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster