Blink en x86-64-emulator som lover å overgå QEMU

blink-gcc

Skjermbilde av blinkkjøring

Nyheten kom nylig om at prosjektet Blink utvikler en ny emulator av x86-64-prosessor som lar deg kjøre kompilerte Linux-applikasjoner statisk i en virtuell maskin med en emulert prosessor.

Det nevnes at ehovedmålet av prosjektet er å gi muligheten til å kjøre Linux-programmer kompilert for x86-64-arkitekturen på andre operativsystemer (macOS, FreeBSD, NetBSD, OpenBSD) og på datamaskiner med en annen maskinvarearkitektur (x86, ARM, RISC-V, MIPS, PowerPC, s390x).

I prosjektdepotet beskriver de blink som følger:

blink er en virtuell maskin som kjører statisk kompilerte x86-64-linux-programmer på forskjellige operativsystemer og maskinvarearkitekturer. Den er designet for å gjøre det samme som kommandoen qemu-x86_64, bortsett fra at (a) i stedet for å være en 4mb binær, har Blink bare et ~160kb fotavtrykk; og (b) Blink er 2 ganger raskere enn Qemu i noen benchmarks, som å emulere GCC. Avveiningen er at Blink ikke har så mange funksjoner som Qemu. Blink passer perfekt når du vil ha en virtuell maskin som er ekstremt liten og kjører flyktige programmer mye raskere. For mer informasjon om motivasjonen for dette verktøyet, vennligst les https://justine.lol/ape.html.

Det er verdt å nevne at prosjektet er utviklet av forfatteren av utviklinger som Cosmopolitan C-biblioteket, en port for forpliktelsesisolasjonsmekanismen for Linux og Redbean universelle kjørbare filsystem.

Når det gjelder funksjonalitet, Blink ser ut som kommandoen qemu-x86_64Men skiller seg fra QEMU i en mer kompakt design og en betydelig økning i ytelse. For eksempel er den kjørbare Blink bare 157 KB i stedet for 4 MB for qemu-x86_64, og når det gjelder ytelse i testkjøringen på GCC-emulatoren, Blink slår QEMU to ganger.

For å sikre høy ytelse, en JIT-kompilator brukes, som konverterer kildeinstruksjoner til maskinkode for målplattformen på farten (så langt støtter kun x86_64 og aarch64 JIT).

Direkte lansering på emulatoren av kjørbare filer i formatene ELF, PE (Portable Executables) og bin (Flat Executable), kompilert med standard C-bibliotekene Cosmopolitan, Glibc og Musl støttes.

Bortsett fra det, Det skiller seg også ut at det har integrert støtte for mer enn hundre samtaler til Linux-systemet, inkludert gaffel() og klone(). Emulering av instruksjonssettene i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87, RDRND, RDSEED og RDTSCP støttes.

Videre prosjektet utvikler blinkenlights-verktøyet, som gir et grensesnitt for feilsøking av programmer på forskjellige plattformer, visualisering av programkjøring og analyse av minneinnhold. En funksjon ved debuggeren er støtte for omvendt feilsøkingsmodus (Reverse Debugging), som lar deg gå tilbake i utførelseshistorikken og gå tilbake til et tidligere utført punkt.

blinkenlights er et TUI-grensesnitt som kan brukes til å feilsøke x86_64-linux-programmer på alle plattformer. I motsetning til GDB, fokuserer Blinkenlights på å visualisere utførelsen av programmet. Den bruker UNICODE IBM Code Page 437-tegn for å vise binære minnepaneler, som endres etter hvert som du beveger deg gjennom assemblykoden til programmet. Disse minnepanelene kan rulles og forstørres med musehjulet. Blinkenlights støtter også omvendt debugging, der rulling av hjulet på monteringsskjermen lar deg spole tilbake utførelseshistorikken.

Til slutt, for de som er interessert i å lære mer om dette prosjektet, bør de vite at prosjektkoden er skrevet i C (ANSI C11) og distribueres under ISC-lisensen. Av avhengighetene er det bare libc (POSIX.1-2017) som kreves.

få blink

For de som er interessert i å kunne prøve blink, bør de vite at kompileringen er ekstremt enkel, de trenger bare å få tak i kildekoden til den, de kan gjøre det fra følgende lenke eller fra en terminal ved å skrive følgende kommando :

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

Og ferdig med det, du trenger bare å gå inn i blik-katalogen og kompilere:

cd blink

make -j4

Hvis du vil vite mer om hvordan Blink fungerer, kan du gjøre det fra følgende lenke.


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: AB Internet Networks 2008 SL
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.