Blinken Sie einen x86-64-Emulator, der verspricht, QEMU zu übertreffen

blink-gcc

Screenshot von blink läuft

Kürzlich kam die Nachricht, dass das Projekt Blink entwickelt einen neuen Emulator von x86-64-Prozessor, der ermöglicht Ihnen, kompilierte Linux-Anwendungen auszuführen statisch in einer virtuellen Maschine mit einem emulierten Prozessor.

Es wird erwähnt, dass eDas Hauptziel Projekt soll die Möglichkeit bieten, Linux-Programme, die für die x86-64-Architektur kompiliert wurden, auf anderen Betriebssystemen auszuführen (macOS, FreeBSD, NetBSD, OpenBSD) und auf Rechnern mit anderer Hardwarearchitektur (x86, ARM, RISC-V, MIPS, PowerPC, s390x).

Im Projekt-Repository beschreiben sie blink wie folgt:

blink ist eine virtuelle Maschine, die statisch kompilierte x86-64-Linux-Programme auf verschiedenen Betriebssystemen und Hardwarearchitekturen ausführt. Es ist so konzipiert, dass es dasselbe tut wie der Befehl qemu-x86_64, außer dass (a) Blink anstelle einer 4-MB-Binärdatei nur einen Footprint von ~ 160 KB hat; und (b) Blink ist in einigen Benchmarks doppelt so schnell wie Qemu, z. B. bei der Emulation von GCC. Der Nachteil ist, dass Blink nicht so viele Funktionen wie Qemu hat. Blink ist perfekt geeignet, wenn Sie eine virtuelle Maschine wünschen, die extrem klein ist und flüchtige Programme viel schneller ausführt. Weitere Einzelheiten zu den Beweggründen für dieses Tool finden Sie unter https://justine.lol/ape.html.

Es ist erwähnenswert, dass das Projekt vom Autor von Entwicklungen wie der Cosmopolitan C-Bibliothek, einer Portierung des Commitment-Isolationsmechanismus für Linux und dem universellen ausführbaren Dateisystem Redbean entwickelt wird.

In Bezug auf die Funktionalität, Blink sieht aus wie der Befehl qemu-x86_64, Aber unterscheidet sich von QEMU durch eine kompaktere Bauweise und eine deutliche Leistungssteigerung. Beispielsweise ist die ausführbare Blink-Datei nur 157 KB statt 4 MB für qemu-x86_64 und in Sachen Leistung im Testlauf auf dem GCC-Emulator, Blink schlägt QEMU zweimal.

Um eine hohe Leistung zu gewährleisten, ein JIT-Compiler wird verwendet, die Quellanweisungen in Maschinencode für die Zielplattform on the fly konvertiert (bisher unterstützen nur x86_64 und aarch64 JIT).

Der direkte Start auf dem Emulator von ausführbaren Dateien in den Formaten ELF, PE (Portable Executables) und bin (Flat Executable), kompiliert mit den Standard-C-Bibliotheken Cosmopolitan, Glibc und Musl, wird unterstützt.

Außerdem, Es sticht auch hervor, dass es eine integrierte Unterstützung für mehr als hundert Aufrufe an das Linux-System hat, einschließlich fork() und clone(). Die Emulation der Befehlssätze i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87, RDRND, RDSEED und RDTSCP wird unterstützt.

Zusätzlich das Projekt entwickelt das Dienstprogramm blinkenlights, das eine Schnittstelle zum Debuggen von Programmen auf verschiedenen Plattformen, zum Visualisieren der Programmausführung und zum Analysieren von Speicherinhalten bereitstellt. Eine Funktion des Debuggers ist die Unterstützung des umgekehrten Debugging-Modus (Reverse Debugging), mit dem Sie im Ausführungsverlauf zurückgehen und zu einem zuvor ausgeführten Punkt zurückkehren können.

blinkenlights ist eine TUI-Schnittstelle, die zum Debuggen von x86_64-Linux-Programmen auf allen Plattformen verwendet werden kann. Im Gegensatz zu GDB konzentriert sich Blinkenlights auf die Visualisierung der Ausführung des Programms. Es verwendet UNICODE IBM Code Page 437-Zeichen, um binäre Speichertafeln anzuzeigen, die sich ändern, während Sie sich durch den Assembler-Code Ihres Programms bewegen. Diese Speichertafeln können mit dem Mausrad gescrollt und vergrößert werden. Blinkenlights unterstützt auch umgekehrtes Debugging, bei dem Sie durch Scrollen des Rads auf dem Assembly-Bildschirm den Ausführungsverlauf zurückspulen können.

Schließlich sollten diejenigen, die daran interessiert sind, mehr über dieses Projekt zu erfahren, wissen, dass der Projektcode in C (ANSI C11) geschrieben ist und unter der ISC-Lizenz vertrieben wird. Von den Abhängigkeiten wird nur libc (POSIX.1-2017) benötigt.

Blinzeln bekommen

Für diejenigen, die daran interessiert sind, Blink auszuprobieren, sollten sie wissen, dass die Kompilierung extrem einfach ist, sie müssen nur den Quellcode davon erhalten, sie können dies über den folgenden Link oder von einem Terminal aus tun, indem sie den folgenden Befehl eingeben :

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

Und fertig, Sie müssen nur noch das blik-Verzeichnis eingeben und kompilieren:

cd blink

make -j4

Wenn Sie mehr darüber erfahren möchten, wie Blink funktioniert, können Sie dies über die tun folgenden Link


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: AB Internet Networks 2008 SL
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.