Blink 的第一个版本,一个高性能的 x86-64 模拟器

Blink 项目的第一个重要版本已经发布,它开发了一个 x86-64 处理器模拟器,允许您在具有模拟处理器的虚拟机中运行静态和动态构建的 Linux 应用程序。 借助 Blink,为 x86-64 架构编译的 Linux 程序可以在其他 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),而不是 qemu-x4_86 的 64 MB,并且在某些测试中,例如在 GCC 模拟器中运行并执行数学运算,它的性能优于QEMU 大约是两倍。

为了确保高性能,使用了 JIT 编译器,它将源指令即时转换为目标平台的机器代码。 该模拟器支持直接启动 ELF、PE(可移植可执行文件)和 bin(平面可执行文件)格式的可执行文件,这些文件是使用标准 C 库 Cosmopolitan、Glibc 和 Musl 编译的。 内置支持 180 个 Linux 系统调用和模拟约 600 个 x86 处理器指令,涵盖 i8086、i386、SSE2、x86_64、SSE3、SSSE3、CLMUL、POPCNT、ADX、BMI2(MULX、PDEP、PEXT)、X87、RDRND、RDSEED指令集和 RDTSCP。

此外,基于Blink,正在开发blinkenlights实用程序,它提供了一个用于可视化程序执行进度和分析内存内容的界面。 该实用程序可以用作支持反向调试模式的调试器,并允许您在执行历史记录中向后移动并返回到之前执行的点。 该项目由 Cosmopolitan C 库、Linux 质押隔离机制的移植以及 Redbean 通用可执行文件系统等开发者开发。

Blink 的第一个版本,一个高性能的 x86-64 模拟器


来源: opennet.ru

添加评论