Blink 一个有望超越 QEMU 的 x86-64 模拟器

闪烁-gcc

blink运行截图

近日有消息称,该项目 Blink 正在开发新的模拟器 的 x86-64 处理器 允许您运行已编译的 Linux 应用程序 静态地在具有模拟处理器的虚拟机中。

提到e主要目标 项目的 是提供在其他操作系统上运行为 x86-64 架构编译的 Linux 程序的能力 (macOS、FreeBSD、NetBSD、OpenBSD)和具有不同硬件架构(x86、ARM、RISC-V、MIPS、PowerPC、s390x)的计算机。

在项目存储库中,他们对 blink 的描述如下:

blink 是一个虚拟机,可以在不同的操作系统和硬件架构上运行静态编译的 x86-64-linux 程序。 它被设计用来做与 qemu-x86_64 命令相同的事情,除了 (a) Blink 不是 4mb 的二进制文件,它只有 ~160kb 的占用空间; (b) Blink 在一些基准测试中比 Qemu 快 2 倍,比如模拟 GCC。 权衡是 Blink 没有 Qemu 那样多的功能。 当您想要一个非常小并且运行临时程序更快的虚拟机时,Blink 是一个完美的选择。 有关此工具的动机的更多详细信息,请阅读 https://justine.lol/ape.html。

值得一提的是,该项目是由 Cosmopolitan C 库、Linux 承诺隔离机制的端口和 Redbean 通用可执行文件系统等开发项目的作者开发的。

在功能方面, 闪烁看起来像命令 qemu-x86_64,但 与 QEMU 的不同之处在于更紧凑的设计和显着的性能提升. 例如,对于 qemu-x157_4,Blink 可执行文件只有 86 KB 而不是 64 MB,并且 在性能方面 在 GCC 模拟器上的测试运行中, Blink 两次击败 QEMU.

为确保高性能, 使用 JIT 编译器, 它将源指令动态转换为目标平台的机器代码(到目前为止,只有 x86_64 和 aarch64 支持 JIT)。

直接在模拟器上启动 ELF、PE(可移植可执行文件)和 bin(平面可执行文件)格式的可执行文件,支持使用标准 C 库 Cosmopolitan、Glibc 和 Musl 编译。

除此之外, 更突出的是它集成了对Linux系统百余种调用的支持, 包括 fork() 和 clone()。 支持 i8086、i386、SSE2、x86_64、SSE3、SSSE3、CLMUL、POPCNT、ADX、BMI2(MULX、PDEP、PEXT)、X87、RDRND、RDSEED 和 RDTSCP 指令集的仿真。

另外, 该项目正在开发 blinkenlights 实用程序, 它提供了一个接口,用于在不同平台上调试程序、可视化程序执行和分析内存内容。 调试器的一个特性是支持反向调试模式(Reverse Debugging),它允许您返回执行历史并返回到之前执行的点。

blinkenlights 是一个 TUI 界面,可用于在所有平台上调试 x86_64-linux 程序。 与 GDB 不同,Blinkenlights 专注于可视化程序的执行。 它使用 UNICODE IBM 代码页 437 字符来显示二进制内存面板,这些面板会随着您在程序的汇编代码中移动而改变。 可以使用鼠标滚轮滚动和放大这些记忆面板。 Blinkenlights 还支持反向调试,在程序集屏幕上滚动滚轮可以让您倒回执行历史记录。

最后,对于那些有兴趣了解更多关于这个项目的人,他们应该知道项目代码是用 C (ANSI C11) 编写的,并在 ISC 许可下分发。 在依赖项中,只有 libc (POSIX.1-2017) 是必需的。

眨眼

对于那些有兴趣尝试 blink 的人,他们应该知道它的编译非常简单,他们只需要获取它的源代码,他们可以从以下链接或从终端输入以下命令来完成:

git https://github.com/jart/blink.git

完成它,你只需要进入 blik 目录并编译:

cd blink

make -j4

如果你想了解更多关于 Blink 的工作原理,你可以从 以下链接。


成为第一个发表评论

发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责资料:AB Internet Networks 2008 SL
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。