Mag-blink ng x86-64 emulator na nangangakong malalampasan ang QEMU

blink-gcc

Screenshot ng blink running

Ang balita kamakailan ay sinira na ang proyekto Gumagawa si Blink ng bagong emulator ng x86-64 processor na nagbibigay-daan sa iyo na magpatakbo ng pinagsama-samang mga aplikasyon ng Linux statically sa isang virtual machine na may isang emulated processor.

Nabanggit na eang pangunahing layunin ng proyekto ay upang magbigay ng kakayahang magpatakbo ng mga programang Linux na pinagsama-sama para sa x86-64 na arkitektura sa iba pang mga operating system (macOS, FreeBSD, NetBSD, OpenBSD) at sa mga computer na may ibang arkitektura ng hardware (x86, ARM, RISC-V, MIPS, PowerPC, s390x).

Sa repository ng proyekto, inilalarawan nila ang blink tulad ng sumusunod:

Ang blink ay isang virtual machine na nagpapatakbo ng statically compiled x86-64-linux programs sa iba't ibang operating system at hardware architecture. Ito ay idinisenyo upang gawin ang parehong bagay tulad ng qemu-x86_64 command, maliban sa (a) sa halip na maging isang 4mb binary, ang Blink ay mayroon lamang ~160kb footprint; at (b) Ang Blink ay 2x na mas mabilis kaysa sa Qemu sa ilang benchmark, tulad ng pagtulad sa GCC. Ang tradeoff ay ang Blink ay walang kasing daming feature gaya ng Qemu. Ang blink ay isang perpektong akma kapag gusto mo ng isang virtual machine na napakaliit at nagpapatakbo ng mga ephemeral na programa nang mas mabilis. Para sa higit pang mga detalye sa mga motibasyon para sa tool na ito, pakibasa ang https://justine.lol/ape.html.

Ito ay nagkakahalaga ng pagbanggit na ang proyekto ay binuo ng may-akda ng mga pagpapaunlad tulad ng Cosmopolitan C library, isang port ng mekanismo ng paghihiwalay ng pangako para sa Linux at ang Redbean universal executable file system.

Sa mga tuntunin ng pag-andar, Ang blink ay mukhang ang command na qemu-x86_64Pero ay naiiba sa QEMU sa isang mas compact na disenyo at isang makabuluhang pagtaas sa pagganap. Halimbawa, ang Blink executable ay 157 KB lang sa halip na 4 MB para sa qemu-x86_64, at sa mga tuntunin ng pagganap sa test run sa GCC emulator, Dalawang beses na tinalo ni Blink ang QEMU.

Upang matiyak ang mataas na pagganap, isang JIT compiler ang ginagamit, na nagko-convert ng mga tagubilin sa pinagmulan sa machine code para sa target na platform on the fly (sa ngayon ay x86_64 at aarch64 lang ang sumusuporta sa JIT).

Direktang paglunsad sa emulator ng mga executable na file sa ELF, PE (Portable Executables) at bin (Flat Executable) na mga format, na pinagsama-sama sa mga karaniwang C library na Cosmopolitan, Glibc at Musl ay suportado.

Bukod diyan, Kapansin-pansin din na mayroon itong pinagsamang suporta para sa higit sa isang daang mga tawag sa Linux system, kasama ang tinidor() at clone(). Ang emulation ng i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87, RDRND, RDSEED, at RDTSCP set ng pagtuturo ay suportado.

Bukod dito, ang proyekto ay bumubuo ng blinkenlights utility, na nagbibigay ng interface para sa pag-debug ng mga programa sa iba't ibang platform, pagpapakita ng pagpapatupad ng programa, at pagsusuri sa mga nilalaman ng memorya. Ang isang tampok ng debugger ay suporta para sa reverse debugging mode (Reverse Debugging), na nagbibigay-daan sa iyong bumalik sa execution history at bumalik sa dating naisakatuparan na punto.

Ang blinkenlights ay isang interface ng TUI na maaaring magamit upang i-debug ang mga x86_64-linux program sa lahat ng platform. Hindi tulad ng GDB, ang Blinkenlights ay nakatuon sa pag-visualize sa pagpapatupad ng programa. Gumagamit ito ng UNICODE IBM Code Page 437 na mga character upang ipakita ang mga binary memory panel, na nagbabago habang lumilipat ka sa assembly code ng iyong program. Ang mga memory panel na ito ay maaaring i-scroll at palakihin gamit ang mouse wheel. Sinusuportahan din ng Blinkenlights ang reverse debugging, kung saan ang pag-scroll sa gulong sa screen ng assembly ay nagbibigay-daan sa iyong i-rewind ang kasaysayan ng pagpapatupad.

Sa wakas, para sa mga interesadong matuto nang higit pa tungkol sa proyektong ito, dapat nilang malaman na ang code ng proyekto ay nakasulat sa C (ANSI C11) at ipinamamahagi sa ilalim ng lisensya ng ISC. Sa mga dependency, libc lang (POSIX.1-2017) ang kailangan.

kumurap

Para sa mga interesadong subukan ang blink, dapat nilang malaman na ang compilation nito ay napakasimple, kailangan lang nilang makuha ang source code nito, magagawa nila ito mula sa sumusunod na link o mula sa isang terminal sa pamamagitan ng pag-type ng sumusunod na command :

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

At tapos na dito, kailangan mo lamang ipasok ang direktoryo ng blik at mag-compile:

cd blink

make -j4

Kung gusto mong malaman ang higit pa tungkol sa kung paano gumagana ang Blink, magagawa mo ito mula sa sumusunod na link.


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: AB Internet Networks 2008 SL
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.