Blink emulátor x86-64, který slibuje překonat QEMU

blink-gcc

Snímek obrazovky běžícího mrkání

Nedávno se objevila zpráva, že projekt Blink vyvíjí nový emulátor procesoru x86-64 umožňuje spouštět kompilované linuxové aplikace staticky ve virtuálním stroji s emulovaným procesorem.

Uvádí se, že ehlavním cílem projektu je poskytnout možnost spouštět linuxové programy kompilované pro architekturu x86-64 na jiných operačních systémech (macOS, FreeBSD, NetBSD, OpenBSD) a na počítačích s jinou hardwarovou architekturou (x86, ARM, RISC-V, MIPS, PowerPC, s390x).

V úložišti projektu popisují blink takto:

blink je virtuální stroj, který spouští staticky kompilované x86-64-linuxové programy na různých operačních systémech a hardwarových architekturách. Je navržen tak, aby dělal stejnou věc jako příkaz qemu-x86_64, kromě toho, že (a) namísto 4mb binárního kódu má Blink pouze plochu ~160 kb; a (b) Blink je 2x rychlejší než Qemu v některých benchmarcích, jako je emulace GCC. Kompromisem je, že Blink nemá tolik funkcí jako Qemu. Blink se perfektně hodí, když chcete virtuální stroj, který je extrémně malý a běží na něm pomíjivé programy mnohem rychleji. Další podrobnosti o motivaci tohoto nástroje najdete na https://justine.lol/ape.html.

Za zmínku stojí, že projekt vyvinul autor vývoje, jako je knihovna Cosmopolitan C, port mechanismu izolace závazků pro Linux a univerzální spustitelný souborový systém Redbean.

Pokud jde o funkčnost, Blink vypadá jako příkaz qemu-x86_64Ale se od QEMU liší kompaktnějším designem a výrazným zvýšením výkonu. Například spustitelný soubor Blink má pouze 157 KB místo 4 MB pro qemu-x86_64 a z hlediska výkonu v testovacím provozu na emulátoru GCC, Blink dvakrát porazí QEMU.

Aby byl zajištěn vysoký výkon, používá se kompilátor JIT, který za běhu převádí zdrojové instrukce na strojový kód pro cílovou platformu (zatím pouze x86_64 a aarch64 podporují JIT).

Je podporováno přímé spuštění na emulátoru spustitelných souborů ve formátech ELF, PE (Portable Executables) a bin (Flat Executable), zkompilovaných se standardními knihovnami C Cosmopolitan, Glibc a Musl.

Kromě toho, Vyniká také tím, že má integrovanou podporu pro více než sto volání do systému Linux, včetně fork() a clone(). Je podporována emulace instrukčních sad i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87, RDRND, RDSEED a RDTSCP.

Navíc, projekt vyvíjí utilitu blinkenlights, který poskytuje rozhraní pro ladění programů na různých platformách, vizualizaci provádění programu a analýzu obsahu paměti. Funkce ladicího programu je podpora režimu zpětného ladění (Reverse Debugging), který vám umožňuje vrátit se v historii provádění a vrátit se k dříve provedenému bodu.

blinkenlights je rozhraní TUI, které lze použít k ladění x86_64-linuxových programů na všech platformách. Na rozdíl od GDB se Blinkenlights zaměřuje na vizualizaci provádění programu. Používá znaky UNICODE IBM Code Page 437 k zobrazení panelů binární paměti, které se mění, když procházíte kódem sestavení vašeho programu. Tyto paměťové panely lze posouvat a zvětšovat pomocí kolečka myši. Blinkenlights také podporuje zpětné ladění, kdy rolování kolečka na obrazovce sestavy umožňuje přetočit historii provádění.

A konečně, pro ty, kteří se chtějí dozvědět více o tomto projektu, měli by vědět, že kód projektu je napsán v C (ANSI C11) a je distribuován pod licencí ISC. Ze závislostí je vyžadována pouze knihovna libc (POSIX.1-2017).

Získejte Blink

Pro ty, kteří mají zájem si blink vyzkoušet, měli by vědět, že jeho kompilace je extrémně jednoduchá, stačí jim získat jeho zdrojový kód, to lze provést z následujícího odkazu nebo z terminálu zadáním následujícího příkazu :

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

A hotovo, stačí vstoupit do adresáře blik a zkompilovat:

cd blink

make -j4

Pokud se chcete dozvědět více o tom, jak Blink funguje, můžete to udělat z následující odkaz.


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Za data odpovídá: AB Internet Networks 2008 SL
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.