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 的實作更緊湊,且效能提升顯著。例如,Blink 可執行檔僅佔用 221 KB(精簡版為 115 KB),而 qemu-x4_86 則佔用 64 MB,並且在某些測試的性能方面(例如在 GCC 模擬器中運行並執行數學運算),它的性能比 QEMU 高出約兩倍。

為了確保高效能,我們使用了 JIT 編譯器,它可以將來源指令動態轉換為目標平台的機器碼。支援在模擬器中直接啟動使用標準 C 函式庫 Cosmopolitan、Glibc 和 Musl 編譯的 ELF、PE(可移植執行檔)和 bin(平面執行檔)格式的執行檔。實作了對 180 個 Linux 系統呼叫的本機支援以及對大約 600 個 x86 處理器指令的模擬,涵蓋 i8086、i386、SSE2、x86_64、SSE3、SSSE3、CLMUL、POPCNT、ADX、BMI2(MULX、PDEP、PEXTCP 指令。

此外,基於 Blink 正在開發 blinkenlights 實用程序,提供視覺化程式執行進度和分析記憶體內容的介面。該實用程式可用作支援反向偵錯模式的偵錯器,並允許您在執行歷史記錄中向後移動並返回到先前執行的點。該專案由 Cosmopolitan C 庫、Linux 質押隔離機制移植以及 Redbean 通用可執行文件系統等開發的作者開發。

 Blink 的第一個版本,一個高性能的 x86-64 模擬器


來源: opennet.ru

添加評論