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

blink-gcc

Snimka zaslona rada blinka

Nedavno je objavljena vijest da je projekt Blink razvija novi emulator procesora x86-64 koji omogućuje vam pokretanje kompajliranih Linux aplikacija statički u virtualnom stroju s emuliranim procesorom.

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

U repozitoriju projekta oni opisuju blink na sljedeći način:

blink je virtualni stroj koji pokreće statički kompajlirane x86-64-linux programe na različitim operativnim sustavima i hardverskim arhitekturama. Dizajniran je da radi istu stvar kao i naredba qemu-x86_64, osim što (a) umjesto da bude binarni od 4mb, Blink ima samo ~160kb otisak; i (b) Blink je 2x brži od Qemu-a u nekim mjerilima, poput emulacije GCC-a. Kompromis je u tome što Blink nema toliko značajki kao Qemu. Blink savršeno odgovara kada želite virtualno računalo koje je izuzetno malo i pokreće efemerne programe mnogo brže. Za više detalja o motivima za ovaj alat, pročitajte https://justine.lol/ape.html.

Vrijedno je spomenuti da je projekt razvio autor razvoja kao što je biblioteka Cosmopolitan C, port mehanizma izolacije obveze za Linux i univerzalni izvršni datotečni sustav Redbean.

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

Kako bi se osigurale visoke performanse, koristi se JIT kompajler, koji u hodu pretvara izvorne instrukcije u strojni kod za ciljnu platformu (do sada samo x86_64 i aarch64 podržavaju JIT).

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

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

Osim toga, projekt razvija uslužni program blinkenlights, koji pruža sučelje za otklanjanje pogrešaka programa na različitim platformama, vizualizaciju izvršavanja programa i analizu sadržaja memorije. Značajka programa za ispravljanje pogrešaka je podrška za obrnuti način otklanjanja pogrešaka (Reverse Debugging), koji vam omogućuje povratak u povijest izvršenja i povratak na prethodno izvršenu točku.

blinkenlights je TUI sučelje koje se može koristiti za debugiranje 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. Ove memorijske ploče mogu se pomicati i povećavati kotačićem miša. Blinkenlights također podržava obrnuto otklanjanje pogrešaka, gdje vam pomicanje kotačića na montažnom ekranu omogućuje premotavanje povijesti izvršenja.

Na kraju, za one koji žele saznati više o ovom projektu, trebali bi znati da je kod projekta napisan u C-u (ANSI C11) i distribuira se pod ISC licencom. Od ovisnosti potreban je samo libc (POSIX.1-2017).

dobiti treptaj

Za one koji žele isprobati blink, trebali bi znati da je njegova kompilacija iznimno jednostavna, trebaju samo nabaviti izvorni kod, to mogu učiniti sa sljedeće veze ili s terminala upisivanjem sljedeće naredbe :

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

I gotovo s tim, samo morate ući u blik direktorij i kompajlirati:

cd blink

make -j4

Ako želite saznati više o tome kako Blink radi, to možete učiniti iz sljedeći link.


Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  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 obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.