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. 權利:您可以隨時限制,恢復和刪除您的信息。