Blinka en x86-64-emulator som lovar att överträffa QEMU

blink-gcc

Skärmdump av blinkning

Nyheten kom nyligen att projektet Blink håller på att utveckla en ny emulator av x86-64-processor som låter dig köra kompilerade Linux-applikationer statiskt i en virtuell maskin med en emulerad processor.

Det nämns att ehuvudmålet av projektet är att ge möjligheten att köra Linux-program kompilerade för x86-64-arkitekturen på andra operativsystem (macOS, FreeBSD, NetBSD, OpenBSD) och på datorer med en annan hårdvaruarkitektur (x86, ARM, RISC-V, MIPS, PowerPC, s390x).

I projektförvaret beskriver de blink enligt följande:

blink är en virtuell maskin som kör statiskt kompilerade x86-64-linux-program på olika operativsystem och hårdvaruarkitekturer. Den är designad för att göra samma sak som kommandot qemu-x86_64, förutom att (a) istället för att vara en 4mb binär, har Blink bara ett ~160kb fotavtryck; och (b) Blink är 2 gånger snabbare än Qemu i vissa benchmarks, som att emulera GCC. Avvägningen är att Blink inte har lika många funktioner som Qemu. Blink passar perfekt när du vill ha en virtuell maskin som är extremt liten och kör kortvariga program mycket snabbare. För mer information om motiven för detta verktyg, läs https://justine.lol/ape.html.

Det är värt att nämna att projektet är utvecklat av författaren till utvecklingar som Cosmopolitan C-biblioteket, en port för mekanismen för åtagandeisolering för Linux och Redbeans universella körbara filsystem.

När det gäller funktionalitet, Blink ser ut som kommandot qemu-x86_64Men skiljer sig från QEMU i en mer kompakt design och en betydande ökning av prestanda. Till exempel är den körbara filen Blink bara 157 KB istället för 4 MB för qemu-x86_64, och vad gäller prestanda i testkörningen på GCC-emulatorn, Blink slår QEMU två gånger.

För att säkerställa hög prestanda, en JIT-kompilator används, som konverterar källinstruktioner till maskinkod för målplattformen i farten (hittills har endast x86_64 och aarch64 stöd för JIT).

Direktstart på emulatorn av körbara filer i formaten ELF, PE (Portable Executables) och bin (Flat Executable), kompilerade med standard C-biblioteken Cosmopolitan, Glibc och Musl stöds.

Förutom det, Det sticker också ut att det har integrerat stöd för mer än hundra samtal till Linux-systemet, inklusive gaffel() och klon(). Emulering av instruktionsuppsättningarna i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87, RDRND, RDSEED och RDTSCP stöds.

Dessutom, projektet utvecklar verktyget blinkenlights, som tillhandahåller ett gränssnitt för att felsöka program på olika plattformar, visualisera programkörning och analysera minnesinnehåll. En funktion hos debuggern är stöd för omvänt felsökningsläge (Reverse Debugging), som låter dig gå tillbaka i exekveringshistoriken och återgå till en tidigare exekverad punkt.

blinkenlights är ett TUI-gränssnitt som kan användas för att felsöka x86_64-linux-program på alla plattformar. Till skillnad från GDB fokuserar Blinkenlights på att visualisera körningen av programmet. Den använder UNICODE IBM Code Page 437 tecken för att visa binära minnespaneler, som ändras när du går igenom assemblykoden för ditt program. Dessa minnespaneler kan rullas och förstoras med mushjulet. Blinkenlights stöder även omvänd felsökning, där rullning av hjulet på monteringsskärmen gör att du kan spola tillbaka exekveringshistoriken.

Slutligen, för de som är intresserade av att lära sig mer om detta projekt, bör de veta att projektkoden är skriven i C (ANSI C11) och distribueras under ISC-licensen. Av beroenden krävs endast libc (POSIX.1-2017).

få blinka

För de som är intresserade av att kunna prova blink, de borde veta att dess kompilering är extremt enkel, de behöver bara skaffa källkoden till det, de kan göra det från följande länk eller från en terminal genom att skriva följande kommando :

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

Och gjort med det, du behöver bara gå in i blik-katalogen och kompilera:

cd blink

make -j4

Om du vill veta mer om hur Blink fungerar kan du göra det från följande länk.


Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för data: AB Internet Networks 2008 SL
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.