Blink un emulador x86-64 que promet superar QEMU

blink-gcc

Captura de pantalla de blink en execució

Fa poc es va donar a conèixer la notícia que el projecte Blink està desenvolupant un nou emulador de processador x86-64 que permet executar aplicacions Linux compilades estàticament en una màquina virtual amb un processador emulat.

S'esmenta que il'objectiu principal del projecte és proporcionar la capacitat d'executar programes Linux compilats per a l'arquitectura x86-64 en altres sistemes operatius (macOS, FreeBSD, NetBSD, OpenBSD) i en equips amb una arquitectura de maquinari diferent (x86, ARM, RISC-V, MIPS, PowerPC, s390x).

Al repositori del projecte descriuen a blink de la següent manera:

blink és una màquina virtual que executa programes x86-64-linux compilats estàticament en diferents sistemes operatius i arquitectures de maquinari. Està dissenyat per fer el mateix que el qemu-x86_64comando, excepte que (a) en lloc de ser un binari de 4mb, Blink només té una empremta de ~160kb; i (b) Blink va 2 vegades més ràpid que Qemu en alguns punts de referència, com emular GCC. La contrapartida és que el Blink no té tantes funcions com Qemu. Blink encaixa perfectament quan voleu una màquina virtual que sigui extremadament petita i executi programes efímers molt més ràpid. Per obtenir més detalls sobre les motivacions d'aquesta eina, llegiu https://justine.lol/ape.html .

Cal esmentar que el projecte és desenvolupat per l'autor de desenvolupaments com ara la biblioteca Cosmopolitan C, un port del mecanisme d'aïllament de compromís per a Linux i el sistema de fitxers executable universal Redbean.

En termes de funcionalitat, Blink s'assembla a l'ordre qemu-x86_64, però es diferencia de QEMU en un disseny més compacte i un augment significatiu del rendiment. Per exemple, el fitxer executable de Blink ocupa només 157 KB en lloc de 4 MB per a qemu-x86_64, i en termes de rendiment a la prova d'execució a l'emulador GCC, Blink supera QEMU dues vegades.

Per garantir un alt rendiment, s'utilitza un compilador JIT, que converteix les instruccions font en codi de màquina per a la plataforma de destinació sobre la marxa (fins ara, només x86_64 i aarch64 són compatibles amb JIT).

S'admet el llançament directe a l'emulador de fitxers executables en format ELF, PE (Portable Executables) i bin (Flat executable), compilats amb les biblioteques C estàndard Cosmopolitan, Glibc i Musl.

A més d'això, també es destaca que compta amb el suport integrat per a més de cent trucades al sistema Linux, incloses fork() i clone(). S'admet l'emulació dels conjunts d'instruccions i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87, RDRND, RDSEED i RDTSCP.

A més, el projecte està desenvolupant la utilitat blinkenlights, que proporciona una interfície per depurar programes a diferents plataformes, visualitzar l'execució del programa i analitzar el contingut de la memòria. Una característica del depurador és la compatibilitat amb el mode de depuració inversa (Depuració inversa), que us permet retrocedir a l'historial d'execució i tornar a un punt executat anteriorment.

blinkenlights és una interfície TUI que es pot utilitzar per depurar programes x86_64-linux a totes les plataformes. A diferència de GDB, Blinkenlights s'enfoca a visualitzar l'execució del programa. Utilitza caràcters UNICODE IBM Code per mostrar panells de memòria binaris, que canvien a mesura que avança pel codi assemblador del programa. Aquests panells de memòria es poden desplaçar i ampliar amb la roda del ratolí. Blinkenlights també permet la depuració inversa, on el desplaçament de la roda sobre la pantalla de l'assemblatge permet rebobinar l'historial d'execució.

Finalment per als interessats a conèixer més sobre aquest projecte, han de saber que el codi del projecte està escrit a C (ANSI C11) i es distribueix sota la llicència ISC. De les dependències, només cal libc (POSIX.1-2017).

Obtenir Blink

Per als qui estiguin interessats a poder provar blink han de saber que la seva compilació és summament senzilla, només han d'obtenir el codi font d'aquest poden fer-ho des del següent enllaç o bé des d'una terminal teclejant la següent ordre:

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

I llest amb això només han d'entrar el directori de blik i compilar:

cd blink

make -j4

Si vols conèixer més sobre el funcionament de Blink, pots fer-ho des del següent enllaç.


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: AB Internet Networks 2008 SL
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.