Unang release ng Blink, isang high performance na x86-64 emulator

Ang unang makabuluhang release ng Blink project ay nai-publish, na bumubuo ng isang emulator ng x86-64 processors na nagbibigay-daan sa iyo na magpatakbo ng static at dynamic na binuo na mga application ng Linux sa isang virtual machine na may isang emulated processor. Sa Blink, ang mga programang Linux na pinagsama-sama para sa x86-64 na arkitektura ay maaaring patakbuhin sa iba pang POSIX-compatible na operating system (macOS, FreeBSD, NetBSD, OpenBSD, Cygwin) at sa mga kagamitan na may iba pang mga hardware architecture (x86, ARM, RISC-V, MIPS , PowerPC, s390x). Ang code ng proyekto ay nakasulat sa wikang C (ANSI C11) at ipinamamahagi sa ilalim ng lisensya ng ISC. Sa mga dependency, libc lang (POSIX.1-2017) ang kailangan.

Sa mga tuntunin ng functionality, ang Blink ay katulad ng qemu-x86_64 command, ngunit naiiba sa QEMU sa mas compact na disenyo nito at makabuluhang pagtaas ng performance. Halimbawa, ang Blink executable ay tumatagal lamang ng 221 KB (na may stripped-down na build - 115 KB) sa halip na 4 MB para sa qemu-x86_64, at sa ilang mga pagsubok, tulad ng pagtakbo sa GCC emulator at pagsasagawa ng mga mathematical operations, ito ay mas mahusay. QEMU nang halos dalawang beses.

Upang matiyak ang mataas na pagganap, isang JIT compiler ang ginagamit, na nagko-convert ng mga tagubilin sa pinagmulan sa mabilisang paraan sa machine code para sa target na platform. Sinusuportahan ng emulator ang direktang paglulunsad 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. Built-in na suporta para sa 180 Linux system call at emulation ng humigit-kumulang 600 x86 processor na mga tagubilin na sumasaklaw sa i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87RD, REDDRND, set ng pagtuturo at RDTSCP.

Bukod pa rito, batay sa Blink, ang blinkenlights utility ay binuo, na nagbibigay ng interface para sa pag-visualize ng progreso ng pagpapatupad ng program at pagsusuri sa mga nilalaman ng memorya. Ang utility ay maaaring gamitin bilang isang debugger na sumusuporta sa reverse-debugging mode at nagbibigay-daan sa iyong bumalik sa execution history at bumalik sa isang dating naisakatuparan na punto. 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.

Unang release ng Blink, isang high performance na x86-64 emulator


Pinagmulan: opennet.ru

Magdagdag ng komento