Blink x86-64 emulator koji obećava da će nadmašiti QEMU

blink-gcc

Snimak ekrana treptanja

Nedavno je objavljena vijest da je projekat Blink razvija novi emulator od x86-64 procesora koji omogućava vam pokretanje kompajliranih Linux aplikacija statički u virtuelnoj mašini sa emuliranim procesorom.

Spominje se da je eglavni cilj projekta je pružiti mogućnost pokretanja Linux programa kompajliranih za x86-64 arhitekturu na drugim operativnim sistemima (macOS, FreeBSD, NetBSD, OpenBSD) i na računarima sa različitom hardverskom arhitekturom (x86, ARM, RISC-V, MIPS, PowerPC, s390x).

U repozitorijumu projekta oni opisuju treptanje na sledeći način:

blink je virtuelna mašina koja pokreće statički kompajlirane x86-64-linux programe na različitim operativnim sistemima i hardverskim arhitekturama. Dizajniran je da radi istu stvar kao naredba qemu-x86_64, osim što (a) umjesto da bude binarni fajl od 4 MB, Blink ima samo ~160 kb otisak; i (b) Blink je 2x brži od Qemu-a u nekim mjerilima, kao što je emulacija GCC-a. Kompromis je u tome što Blink nema toliko funkcija kao Qemu. Blink savršeno odgovara kada želite virtuelnu mašinu koja je izuzetno mala i koja mnogo brže pokreće efemerne programe. Za više detalja o motivaciji za ovaj alat, pročitajte https://justine.lol/ape.html.

Vrijedi spomenuti da je projekat razvio autor razvoja kao što je Cosmopolitan C biblioteka, port mehanizma izolacije obaveza za Linux i Redbean univerzalni izvršni sistem datoteka.

Što se tiče funkcionalnosti, Blink izgleda kao naredba qemu-x86_64, ali razlikuje se od QEMU po kompaktnijem dizajnu i značajnom povećanju performansi. Na primjer, izvršna datoteka Blink je samo 157 KB umjesto 4 MB za qemu-x86_64, i u smislu performansi u probnom radu na GCC emulatoru, Blink dvaput pobjeđuje QEMU.

Da biste osigurali visoke performanse, koristi se JIT kompajler, koji konvertuje izvorne instrukcije u mašinski kod za ciljnu platformu u hodu (do sada samo x86_64 i aarch64 podržavaju JIT).

Podržano je direktno pokretanje na emulatoru izvršnih datoteka u ELF, PE (Portable Executables) i bin (Flat Executable) formatima, kompajlirano sa standardnim C bibliotekama Cosmopolitan, Glibc i Musl.

Pored toga, Takođe se ističe da ima integrisanu podršku za više od sto poziva na Linux sistem, uključujući fork() i clone(). Podržana je emulacija i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87, RDRND, RDSEED i RDTSCP skupova instrukcija.

Takođe, projekat razvija uslužni program blinkenlights, koji pruža interfejs za otklanjanje grešaka u programima na različitim platformama, vizualizaciju izvršavanja programa i analizu memorijskog sadržaja. Karakteristika debugger-a je podrška za režim obrnutog otklanjanja grešaka (Reverse Debugging), koji vam omogućava da se vratite u istoriju izvršavanja i vratite se na prethodno izvršenu tačku.

blinkenlights je TUI interfejs koji se može koristiti za otklanjanje grešaka x86_64-linux programa na svim platformama. Za razliku od GDB-a, Blinkenlights se fokusira na vizualizaciju izvršavanja programa. Koristi UNICODE IBM Code Page 437 znakove za prikaz binarnih memorijskih panela, koji se mijenjaju kako se krećete kroz asemblerski kod vašeg programa. Ovi memorijski paneli se mogu pomicati i povećavati pomoću kotačića miša. Blinkenlights takođe podržava obrnuto otklanjanje grešaka, gde vam pomeranje točkića na ekranu sklopa omogućava da premotate istoriju izvršenja unazad.

Konačno, za one koji su zainteresovani da saznaju više o ovom projektu, trebalo bi da znaju da je kod projekta napisan u C (ANSI C11) i da se distribuira pod ISC licencom. Od zavisnosti, potrebna je samo libc (POSIX.1-2017).

dobiti blink

Za one koji su zainteresirani da mogu isprobati blink, trebali bi znati da je njegova kompilacija izuzetno jednostavna, samo moraju dobiti izvorni kod, mogu to učiniti sa sljedećeg linka ili sa terminala upisivanjem sljedeće naredbe :

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

I završili s tim, samo morate ući u blik direktorij i kompajlirati:

cd blink

make -j4

Ako želite da saznate više o tome kako Blink radi, možete to učiniti na stranici sljedeći link.


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Odgovoran za podatke: AB Internet Networks 2008 SL
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.