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

添加評論