ΠΠ±ΡΠ°Π²Π΅Π½ΠΎ Π΅ ΠΏΡΠ²ΠΎΡΠΎ Π·Π½Π°ΡΠ°ΡΠ½ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ Blink, ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΠΈ Π΅ΠΌΡΠ»Π°ΡΠΎΡ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡ x86-64 ΠΊΠΎΡ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ ΡΡΠ°ΡΠΈΡΠΊΠΈ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠΊΠΈ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½ΠΈ Linux Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π²ΠΎ Π²ΠΈΡΡΡΠ΅Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° ΡΠΎ Π΅ΠΌΡΠ»ΠΈΡΠ°Π½ ΠΏΡΠΎΡΠ΅ΡΠΎΡ. Π‘ΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° Blink, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ Π½Π° Linux ΡΠΎΡΡΠ°Π²Π΅Π½ΠΈ Π·Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° x86-64 ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Π°Ρ Π½Π° Π΄ΡΡΠ³ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΊΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π½ΠΈ ΡΠΎ POSIX (macOS, FreeBSD, NetBSD, OpenBSD, Cygwin) ΠΈ Π½Π° Ρ Π°ΡΠ΄Π²Π΅Ρ ΡΠΎ Π΄ΡΡΠ³ΠΈ Ρ Π°ΡΠ΄Π²Π΅ΡΡΠΊΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ (x86, ARM, RISC-V, MIPS , PowerPC, s390x). ΠΠΎΠ΄ΠΎΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π²ΠΎ C (ANSI C11) ΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½ΡΠ°ΡΠ° ISC. ΠΠ΄ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈΡΠ΅, ΠΏΠΎΡΡΠ΅Π±Π΅Π½ Π΅ ΡΠ°ΠΌΠΎ libc (POSIX.1-2017).
ΠΠΎ ΠΎΠ΄Π½ΠΎΡ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΠ°, Blink Π½Π°Π»ΠΈΠΊΡΠ²Π° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° qemu-x86_64, Π½ΠΎ ΡΠ΅ ΡΠ°Π·Π»ΠΈΠΊΡΠ²Π° ΠΎΠ΄ QEMU ΡΠΎ ΠΏΠΎΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ΅Π½ Π΄ΠΈΠ·Π°ΡΠ½ ΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ·Π²ΡΡΠ½Π°ΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Blink Π·Π΅ΠΌΠ° ΡΠ°ΠΌΠΎ 221 KB (ΡΠΎ ΡΠΊΡΠ°ΡΠ΅Π½Π° Π³ΡΠ°Π΄Π±Π° - 115 KB) Π½Π°ΠΌΠ΅ΡΡΠΎ 4 MB Π·Π° qemu-x86_64, Π° Π²ΠΎ ΠΎΠ΄Π½ΠΎΡ Π½Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π²ΠΎ Π½Π΅ΠΊΠΎΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΈ, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ Π²ΠΎ Π΅ΠΌΡΠ»Π°ΡΠΎΡΠΎΡ GCC ΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, Π³ΠΎ ΠΏΡΠ΅ΡΡΠΈΠ³Π½ΡΠ²Π° QEMU Π·Π° ΠΎΠΊΠΎΠ»Ρ Π΄Π²Π° ΠΏΠ°ΡΠΈ.
ΠΠ° Π΄Π° ΡΠ΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄Π°Ρ Π²ΠΈΡΠΎΠΊΠΈ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ, ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ JIT ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅Ρ, ΠΊΠΎΡ Π³ΠΈ ΠΏΡΠ΅ΡΠ²ΠΎΡΠ° ΠΈΠ·Π²ΠΎΡΠ½ΠΈΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π²ΠΎ ΠΌΠ°ΡΠΈΠ½ΡΠΊΠΈ ΠΊΠΎΠ΄ Π·Π° ΡΠ΅Π»Π½Π°ΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π²ΠΎ Π»Π΅Ρ. ΠΠΎΠ΄Π΄ΡΠΆΠ°Π½ΠΎ Π΅ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΡΡΠ°ΡΡΡΠ²Π°ΡΠ΅ Π²ΠΎ Π΅ΠΌΡΠ»Π°ΡΠΎΡΠΎΡ Π½Π° ΠΈΠ·Π²ΡΡΠ½ΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ Π²ΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅ ELF, PE (Portable Executables) ΠΈ bin (Flat ΠΈΠ·Π²ΡΡΠ½Π°), ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°Π½ΠΈ ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈΡΠ΅ C Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Cosmopolitan, Glibc ΠΈ Musl. ΠΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½Π° ΠΌΠ°ΡΡΠΈΠ½ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° 180 ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈ ΠΏΠΎΠ²ΠΈΡΠΈ Π½Π° Linux ΠΈ Π΅ΠΌΡΠ»Π°ΡΠΈΡΠ° Π½Π° ΠΎΠΊΠΎΠ»Ρ 600 x86 ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π·Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΎΡ ΡΡΠΎ Π³ΠΈ ΠΎΠΏΡΠ°ΡΠ° i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT, X87, ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π½Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΈ RDTSCP.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ, Π°Π»Π°ΡΠΊΠ°ΡΠ° blinkenlights ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° Blink, ΠΊΠΎΡΠ° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ Π·Π° Π²ΠΈΠ·ΡΠ΅Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° ΡΠΎΠ΄ΡΠΆΠΈΠ½Π°ΡΠ° Π½Π° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ°. ΠΠ»Π°ΡΠΊΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π΅Π±Π°Π³Π΅Ρ ΠΊΠΎΡ Π³ΠΎ ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° ΡΠ΅ΠΆΠΈΠΌΠΎΡ Π½Π° ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π΄Π΅Π±Π°Π³ΠΈΡΠ°ΡΠ΅ (ΠΠ±ΡΠ°ΡΠ½ΠΎ-Π΄Π΅Π±Π°Π³ΠΈΡΠ°ΡΠ΅) ΠΈ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΡΠ΅ Π²ΡΠ°ΡΠΈΡΠ΅ Π½Π°Π·Π°Π΄ Π²ΠΎ ΠΈΡΡΠΎΡΠΈΡΠ°ΡΠ° Π½Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ ΠΈ Π΄Π° ΡΠ΅ Π²ΡΠ°ΡΠΈΡΠ΅ Π½Π° ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈΠ·Π²ΡΡΠ΅Π½Π°ΡΠ° ΡΠΎΡΠΊΠ°. ΠΡΠΎΠ΅ΠΊΡΠΎΡ Π΅ ΡΠ°Π·Π²ΠΈΠ΅Π½ ΠΎΠ΄ Π°Π²ΡΠΎΡΠΎΡ Π½Π° ΡΠ°ΠΊΠ²ΠΈ ΡΠ»ΡΡΡΠ²Π°ΡΠ° ΠΊΠ°ΠΊΠΎ ΡΡΠΎ Π΅ C-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Cosmopolitan, ΠΏΡΠΈΡΡΠ°Π½ΠΈΡΡΠ΅ Π½Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΡ Π·Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡΠ° Π½Π° Π·Π°Π»ΠΎΠ³ Π·Π° Linux ΠΈ ΡΠ½ΠΈΠ²Π΅ΡΠ·Π°Π»Π½ΠΈΠΎΡ ΠΈΠ·Π²ΡΡΠ΅Π½ Π΄Π°ΡΠΎΡΠ΅ΡΠ΅Π½ ΡΠΈΡΡΠ΅ΠΌ Redbean.
ΠΠ·Π²ΠΎΡ: opennet.ru