Dojo
最新
最佳
搜索
订阅
解道Jdon
架构设计
领域驱动
DDD介绍
DDD专辑
战略建模
领域语言UL
领域事件
商业分析
工作流BPM
规则引擎
架构师观点
数据工程
产品经理
系统思维
微服务
微服务介绍
微服务专辑
模块化设计
SOA
API设计
clean架构
SpringBoot
分布式事务
事件溯源
Kafka消息
Kubernetes
DevOps
编程设计
GoF设计模式
模式专辑
面向对象
函数式编程
编程语言比较
编程工具比较
形式逻辑
前端编程
Reactive编程
Jdon框架
Rust语言
人工智能
Web3
模因梗
幽默梗
程序员吐槽
面试技巧
Java入门
数字化转型
认知偏差
道德经
更多话题
jart/blink:最小的 x86-64-linux 模拟器
22-12-29
banq
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 设计的,它在它编译的每个二进制文件中嵌入了一个操作系统。
Linux
GitHub开源免费源代码