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.
Ako: Gaano ba kaliit ang isang emulator?
Blink: Oo.#Blink #clang #GCC #hacking pic.twitter.com/75iUIQN6Wn— 0xHiro (ヒロ) (@0x1hiro) Enero 4, 2023
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.