Lampeggia un emulatore x86-64 che promette di superare QEMU

lampeggiante-gcc

Screenshot di lampeggiamento in esecuzione

Recentemente è arrivata la notizia che il progetto Blink sta sviluppando un nuovo emulatore del processore x86-64 che consente di eseguire applicazioni Linux compilate staticamente in una macchina virtuale con un processore emulato.

Si dice che el'obiettivo principale progetto è fornire la possibilità di eseguire programmi Linux compilati per l'architettura x86-64 su altri sistemi operativi (macOS, FreeBSD, NetBSD, OpenBSD) e su computer con un'architettura hardware diversa (x86, ARM, RISC-V, MIPS, PowerPC, s390x).

Nel repository del progetto descrivono i blink come segue:

blink è una macchina virtuale che esegue programmi x86-64-linux compilati staticamente su diversi sistemi operativi e architetture hardware. È progettato per fare la stessa cosa del comando qemu-x86_64, tranne per il fatto che (a) invece di essere un binario da 4 MB, Blink ha solo un footprint di ~ 160 kb; e (b) Blink è 2 volte più veloce di Qemu in alcuni benchmark, come l'emulazione di GCC. Il compromesso è che Blink non ha tante funzionalità come Qemu. Blink è perfetto quando si desidera una macchina virtuale estremamente piccola e che esegua programmi effimeri molto più velocemente. Per maggiori dettagli sulle motivazioni di questo strumento, leggi https://justine.lol/ape.html.

Vale la pena ricordare che il progetto è sviluppato dall'autore di sviluppi come la libreria Cosmopolitan C, un port del meccanismo di isolamento degli impegni per Linux e il file system eseguibile universale Redbean.

In termini di funzionalità, Blink assomiglia al comando qemu-x86_64, Ma differisce da QEMU per un design più compatto e un significativo aumento delle prestazioni. Ad esempio, l'eseguibile Blink è di soli 157 KB invece di 4 MB per qemu-x86_64 e in termini di prestazioni nell'esecuzione di test sull'emulatore GCC, Blink batte QEMU due volte.

Per garantire elevate prestazioni, viene utilizzato un compilatore JIT, che converte al volo le istruzioni di origine in codice macchina per la piattaforma di destinazione (finora solo x86_64 e aarch64 supportano JIT).

È supportato il lancio diretto sull'emulatore di file eseguibili nei formati ELF, PE (Portable Executables) e bin (Flat Executable), compilati con le librerie C standard Cosmopolitan, Glibc e Musl.

A parte quello, Si distingue anche per il supporto integrato per più di cento chiamate al sistema Linux, inclusi fork() e clone(). È supportata l'emulazione dei set di istruzioni i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87, RDRND, RDSEED e RDTSCP.

Inoltre, il progetto sta sviluppando l'utility blinkenlights, che fornisce un'interfaccia per il debug di programmi su piattaforme diverse, la visualizzazione dell'esecuzione del programma e l'analisi del contenuto della memoria. Una caratteristica del debugger è il supporto per la modalità di debug inverso (Debug inverso), che consente di tornare indietro nella cronologia di esecuzione e tornare a un punto eseguito in precedenza.

blinkenlights è un'interfaccia TUI che può essere utilizzata per eseguire il debug di programmi x86_64-linux su tutte le piattaforme. A differenza di GDB, Blinkenlights si concentra sulla visualizzazione dell'esecuzione del programma. Utilizza i caratteri UNICODE IBM Code Page 437 per visualizzare i pannelli di memoria binaria, che cambiano man mano che ci si sposta nel codice assembly del programma. Questi pannelli di memoria possono essere fatti scorrere e ingranditi con la rotellina del mouse. Blinkenlights supporta anche il debug inverso, in cui lo scorrimento della rotellina nella schermata dell'assieme consente di riavvolgere la cronologia delle esecuzioni.

Infine, per chi fosse interessato a saperne di più su questo progetto, sappia che il codice del progetto è scritto in C (ANSI C11) ed è distribuito sotto licenza ISC. Delle dipendenze, è richiesta solo libc (POSIX.1-2017).

battere le palpebre

Per chi fosse interessato a poter provare blink sappia che la sua compilazione è estremamente semplice, deve solo procurarsene il codice sorgente, può farlo dal seguente link o da terminale digitando il seguente comando :

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

E fatto con esso, devi solo entrare nella directory blik e compilare:

cd blink

make -j4

Se vuoi saperne di più su come funziona Blink, puoi farlo dal seguente link


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile del trattamento: AB Internet Networks 2008 SL
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.