blink是一个虚拟机,用于在不同的操作系统和硬件架构上运行静态编译的x86-64-linux程序。
它被设计成与qemu-x86_64命令做同样的事情,除了:
- (a) Blink不是一个4mb的二进制文件,而是只有大约166kb的占用空间;以及
- (b) Blink在一些基准上比Qemu快2倍,比如模拟GCC。Blink没有Qemu那么多的功能。
当你想要一个非常小的虚拟机,并且运行短暂的程序快得多时,Blink是一个非常合适的选择。
定期测试 Blink 是否能够在以下平台上运行 x86-64-linux 二进制文件:
- Linux(x86、ARM、MIPS、PowerPC、s390x)
- MacOS(x86,ARM)
- FreeBSD
- OpenBSD
- NetBSD
Blink 依赖于以下库:
- libc (POSIX.1-2017)
Blink 可以在具有以下条件的 UNIX 系统上编译:
- C11 编译器(例如 GCC 4.9.4+)
- 现代 GNU Make(即不是 XCode 附带的那个)
blink 是一个用于 POSIX 平台的 x86-64 解释器,它是用与 C++ 编译器兼容的 ANSI C11 编写的。指令解码是使用我们精简版的英特尔反汇编程序 Xed 完成的。
该项目的主要目标是充当由 Cosmopolitan Libc 编译的用户空间二进制文件的虚拟机。然而,我们也成功地虚拟化了使用 Glibc 和 Musl Libc 编译的程序,例如 GCC 和 Qemu。Blink 支持一百多个 Linux 系统调用 ABI,包括 fork() 和 clone()。支持 SSE2、SSE3、SSSE3、POPCNT、CLMUL、RDTSCP 和 RDRND 硬件 ISA。Blink 的遗留 x87 FPU 目前仅支持双精度(64 位),就像 Windows 一样。
Blink 使用即时编译,在 x86_64 和 aarch64 上都支持。Blink 在 Apple 和 OpenBSD 等平台上采取适当的步骤来解决与 JIT 相关的限制。
Blink 使用即时编译,在 x86_64 和 aarch64 上都支持。
Blink 使用与硬件本身相同的 PML4T 方法来虚拟化内存,其中内存查找是通过四级基数树间接进行的。
Blink 支持 16 位 BIOS 程序,例如 SectorLISP。
Blink 支持对操作系统引导加载程序进行故障排除。Blink 是为 Cosmopolitan Libc 设计的,它在它编译的每个二进制文件中嵌入了一个操作系统。