Lëshimi i parë i Blink, një emulator me performancë të lartë x86-64

Është publikuar publikimi i parë i rëndësishëm i projektit Blink, duke zhvilluar një emulator të procesorit x86-64 që ju lejon të ekzekutoni aplikacione Linux të ndërtuara në mënyrë statike dhe dinamike në një makinë virtuale me një procesor të emuluar. Duke përdorur Blink, programet Linux të përpiluara për arkitekturën x86-64 mund të ekzekutohen në sisteme të tjera operative në përputhje me POSIX (macOS, FreeBSD, NetBSD, OpenBSD, Cygwin) dhe në pajisje me arkitektura të tjera harduerike (x86, ARM, RISC-V, MIPS , PowerPC, s390x). Kodi i projektit është shkruar në C (ANSI C11) dhe shpërndahet nën licencën ISC. Nga varësitë, kërkohet vetëm libc (POSIX.1-2017).

Për sa i përket funksionalitetit, Blink i ngjan komandës qemu-x86_64, por ndryshon nga QEMU në një dizajn më kompakt dhe një rritje të konsiderueshme të performancës. Për shembull, skedari i ekzekutueshëm Blink merr vetëm 221 KB (me një ndërtim të cunguar - 115 KB) në vend të 4 MB për qemu-x86_64, dhe për sa i përket performancës në disa teste, të tilla si ekzekutimi në emulatorin GCC dhe kryerja e operacioneve matematikore, e kapërcen QEMU me rreth dy herë.

Për të siguruar performancë të lartë, përdoret një përpilues JIT, i cili konverton udhëzimet burimore në kodin e makinës për platformën e synuar në fluturim. Mbështetet lëshimi i drejtpërdrejtë në emulatorin e skedarëve të ekzekutueshëm në formatet ELF, PE (Portable Executables) dhe bin (Flat executable), të përpiluar me bibliotekat standarde C Cosmopolitan, Glibc dhe Musl. Mbështetje e implementuar për 180 thirrje të sistemit Linux dhe emulim i rreth 600 udhëzimeve të procesorit x86 që mbulojnë i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT, X87, grupe instruksionesh dhe RDTSCP.

Për më tepër, programi blinkenlights po zhvillohet në bazë të Blink, i cili ofron një ndërfaqe për vizualizimin e ekzekutimit të programit dhe analizimin e përmbajtjes së kujtesës. Programi mund të përdoret si një korrigjues që mbështet modalitetin e korrigjimit të kundërt (Reverse-Debugging) dhe ju lejon të ktheheni në historikun e ekzekutimit dhe të ktheheni në një pikë të ekzekutuar më parë. Projekti është zhvilluar nga autori i zhvillimeve të tilla si C-library Cosmopolitan, një port i mekanizmit të izolimit të zotimit për Linux dhe sistemi i skedarëve të ekzekutueshëm universal Redbean.

Lëshimi i parë i Blink, një emulator me performancë të lartë x86-64


Burimi: opennet.ru

Shto një koment