Blink x86-64 emuliatorius, kuris žada pranokti QEMU

blink-gcc

Blyksčiojimo ekrano kopija

Neseniai pasklido žinia, kad projektas Blink kuria naują emuliatorių x86-64 procesoriaus leidžia paleisti sukompiliuotas Linux programas statiškai virtualioje mašinoje su emuliuotu procesoriumi.

Minima, kad epagrindinis tikslas projekto yra suteikti galimybę paleisti Linux programas, sudarytas x86-64 architektūrai kitose operacinėse sistemose („MacOS“, „FreeBSD“, „NetBSD“, „OpenBSD“) ir kompiuteriuose su skirtinga aparatinės įrangos architektūra (x86, ARM, RISC-V, MIPS, PowerPC, s390x).

Projekto saugykloje jie apibūdina mirksėjimą taip:

blink yra virtuali mašina, kuri paleidžia statiškai kompiliuotas x86-64-Linux programas skirtingose ​​operacinėse sistemose ir aparatinės įrangos architektūrose. Jis sukurtas atlikti tą patį veiksmą, kaip ir komanda qemu-x86_64, išskyrus tai, kad (a) užuot 4mb dvejetainis, Blink turi tik ~160kb pėdsaką; ir (b) Blink yra 2 kartus greitesnis nei Qemu kai kuriuose etalonuose, pvz., emuliuojant GCC. Kompromisas yra tas, kad „Blink“ neturi tiek daug funkcijų kaip „Qemu“. Blink puikiai tinka, kai norite virtualios mašinos, kuri būtų itin maža ir kur kas greičiau vykdytų trumpalaikes programas. Norėdami gauti daugiau informacijos apie šio įrankio motyvus, skaitykite https://justine.lol/ape.html.

Verta paminėti, kad projektą sukūrė tokių pokyčių kaip „Cosmopolitan C“ biblioteka, „Linux“ įsipareigojimų izoliavimo mechanizmo prievadas ir „Redbean“ universali vykdomųjų failų sistema, autorius.

Kalbant apie funkcionalumą, Mirksėjimas atrodo kaip komanda qemu-x86_64, bet skiriasi nuo QEMU kompaktiškesniu dizainu ir žymiai padidintu našumu. Pavyzdžiui, Blink vykdomasis failas yra tik 157 KB, o ne 4 MB qemu-x86_64, ir našumo požiūriu bandomajame paleidime GCC emuliatoriuje, Blink du kartus įveikia QEMU.

Norėdami užtikrinti aukštą našumą, naudojamas JIT kompiliatorius, kuri konvertuoja šaltinio instrukcijas į tikslinės platformos mašininį kodą (iki šiol JIT palaiko tik x86_64 ir aarch64).

Palaikomas tiesioginis ELF, PE (Portable Executable) ir bin (Flat Executable) formatų vykdomųjų failų, sudarytų su standartinėmis C bibliotekomis Cosmopolitan, Glibc ir Musl, paleidimas.

Neskaitant to, Jis taip pat išsiskiria tuo, kad turi integruotą palaikymą daugiau nei šimtui skambučių į „Linux“ sistemą, įskaitant fork() ir clone(). Palaikoma i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87, RDRND, RDSEED ir RDTSCP instrukcijų rinkinių emuliacija.

Be to, projekte kuriama blinkenlights programa, kuri suteikia sąsają programoms įvairiose platformose derinti, programos vykdymui vizualizuoti ir atminties turiniui analizuoti. Derinimo priemonė yra atvirkštinio derinimo režimo (atvirkštinio derinimo) palaikymas, leidžiantis grįžti į vykdymo istoriją ir grįžti į anksčiau vykdytą tašką.

blinkenlights yra TUI sąsaja, kurią galima naudoti x86_64-linux programoms derinti visose platformose. Skirtingai nei GDB, „Blinkenlights“ daugiausia dėmesio skiria programos vykdymo vizualizavimui. Jame naudojami UNICODE IBM kodo simboliai, kad būtų rodomos dvejetainės atminties plokštės, kurios keičiasi judant per programos surinkimo kodą. Šias atminties plokštes galima slinkti ir padidinti pelės ratuku. „Blinkenlights“ taip pat palaiko atvirkštinį derinimą, kai slenkant ratuku surinkimo ekrane galima atsukti vykdymo istoriją.

Galiausiai, norintys sužinoti daugiau apie šį projektą, jie turėtų žinoti, kad projekto kodas parašytas C (ANSI C11) ir platinamas pagal ISC licenciją. Iš priklausomybių reikalingas tik libc (POSIX.1-2017).

mirksėti

Tie, kurie domisi galimybe išbandyti blink, turėtų žinoti, kad jo kompiliavimas yra labai paprastas, tereikia gauti šaltinio kodą, tai gali padaryti iš šios nuorodos arba iš terminalo įvesdami šią komandą :

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

Baigę tai, tereikia įvesti blik katalogą ir sukompiliuoti:

cd blink

make -j4

Jei norite sužinoti daugiau apie tai, kaip veikia Blink, galite tai padaryti iš sekanti nuoroda.


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Už duomenis atsakingas: AB Internet Networks 2008 SL
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.