Pirmā Blink, augstas veiktspējas x86-64 emulatora izlaidums

Publicēts pirmais nozīmīgais Blink projekta izlaidums, kurā tiek izstrādāts x86-64 procesoru emulators, kas ļauj darbināt statiski un dinamiski veidotas Linux aplikācijas virtuālajā mašīnā ar emulētu procesoru. Izmantojot Blink, Linux programmas, kas kompilētas x86-64 arhitektūrai, var palaist citās ar POSIX saderīgās operētājsistēmās (macOS, FreeBSD, NetBSD, OpenBSD, Cygwin) un iekārtās ar citām aparatūras arhitektūrām (x86, ARM, RISC-V, MIPS). , PowerPC, s390x). Projekta kods ir rakstīts C valodā (ANSI C11) un tiek izplatīts saskaņā ar ISC licenci. No atkarībām ir nepieciešama tikai libc (POSIX.1-2017).

Funkcionalitātes ziņā Blink ir līdzīgs komandai qemu-x86_64, taču atšķiras no QEMU ar kompaktāku dizainu un ievērojamu veiktspējas pieaugumu. Piemēram, Blink izpildāmā faila qemu-x221_115 4 MB vietā aizņem tikai 86 KB (ar atdalītu būvējumu — 64 KB), un dažos testos, piemēram, darbojoties GCC emulatorā un veicot matemātiskās darbības, tas pārspēj QEMU par aptuveni divas reizes.

Lai nodrošinātu augstu veiktspēju, tiek izmantots JIT kompilators, kas avota instrukcijas lidojumā pārvērš mašīnkodā mērķa platformai. Emulators atbalsta tiešu izpildāmo failu palaišanu ELF, PE (Portable Executables) un bin (Flat executable) formātos, kas apkopoti ar standarta C bibliotēkām Cosmopolitan, Glibc un Musl. Iebūvēts atbalsts 180 Linux sistēmas izsaukumiem un aptuveni 600 x86 procesora instrukciju emulācija, kas aptver i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), XRDSERD, X87, instrukciju kopas un RDTSCP.

Turklāt, pamatojoties uz Blink, tiek izstrādāta blinkenlights utilīta, kas nodrošina saskarni programmas izpildes gaitas vizualizācijai un atmiņas satura analīzei. Lietderību var izmantot kā atkļūdotāju, kas atbalsta apgrieztās atkļūdošanas režīmu un ļauj atgriezties izpildes vēsturē un atgriezties iepriekš izpildītā punktā. Projektu izstrādā tādu izstrādņu autors kā Cosmopolitan C bibliotēka, Linux ķīlas izolācijas mehānisma ports un Redbean universālā izpildāmā failu sistēma.

Pirmā Blink, augstas veiktspējas x86-64 emulatora izlaidums


Avots: opennet.ru

Pievieno komentāru