Prima versione di Blink, un emulatore x86-64 ad alte prestazioni

È stata pubblicata la prima release significativa del progetto Blink, che sviluppa un emulatore di processori x86-64 che consente di eseguire applicazioni Linux costruite staticamente e dinamicamente in una macchina virtuale con un processore emulato. Con Blink i programmi Linux compilati per l'architettura x86-64 possono essere eseguiti su altri sistemi operativi compatibili con POSIX (macOS, FreeBSD, NetBSD, OpenBSD, Cygwin) e su apparecchiature con altre architetture hardware (x86, ARM, RISC-V, MIPS , Power PC, s390x). Il codice del progetto è scritto in linguaggio C (ANSI C11) ed è distribuito sotto licenza ISC. Delle dipendenze è richiesta solo libc (POSIX.1-2017).

In termini di funzionalità, Blink è simile al comando qemu-x86_64, ma differisce da QEMU per il design più compatto e un significativo aumento delle prestazioni. Ad esempio, l'eseguibile Blink occupa solo 221 KB (con una build ridotta - 115 KB) invece di 4 MB per qemu-x86_64, e in alcuni test, come l'esecuzione nell'emulatore GCC e l'esecuzione di operazioni matematiche, supera le prestazioni QEMU di circa due volte.

Per garantire prestazioni elevate, viene utilizzato un compilatore JIT, che converte al volo le istruzioni sorgente in codice macchina per la piattaforma di destinazione. L'emulatore supporta il lancio diretto di file eseguibili nei formati ELF, PE (Portable Executables) e bin (Flat executable), compilati con le librerie C standard Cosmopolitan, Glibc e Musl. Supporto integrato per 180 chiamate di sistema Linux ed emulazione di circa 600 istruzioni del processore x86 che coprono i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87, RDRND, RDSEED set di istruzioni e RDTSCP.

Inoltre, sulla base di Blink, è in fase di sviluppo l'utility flashenlights, che fornisce un'interfaccia per visualizzare l'avanzamento dell'esecuzione del programma e analizzare il contenuto della memoria. L'utilità può essere utilizzata come debugger che supporta la modalità di debug inverso e consente di tornare indietro nella cronologia di esecuzione e tornare a un punto eseguito in precedenza. Il progetto è sviluppato dall'autore di sviluppi come la libreria Cosmopolitan C, un port del meccanismo di isolamento pledge per Linux e il file system eseguibile universale Redbean.

Prima versione di Blink, un emulatore x86-64 ad alte prestazioni


Fonte: opennet.ru

Aggiungi un commento