Neue Versionen der Emulatoren Box86 und Box64 ermöglichen das Ausführen von x86-Spielen auf ARM-Systemen.

Es wurden die Versionen der Emulatoren Box86 0.2.6 und Box64 0.1.8 veröffentlicht, die darauf abzielen, Linux-Programme, die für die Architekturen x86 und x86_64 kompiliert wurden, auf Hardware mit ARM-, ARM64-, PPC64LE- und RISC-V-Prozessoren auszuführen. Die Projekte werden synchron von einem Entwicklerteam betreut — Box86 beschränkt sich auf die Ausführung von 32-Bit-x86-Anwendungen, während Box64 die Ausführung von 64-Bit-Executable-Dateien ermöglicht. Das Projekt legt großen Wert auf die Ausführung von Spieleanwendungen und ermöglicht unter anderem die Ausführung von Windows-Builds über Wine und Proton. Der Quellcode des Projekts ist in C geschrieben und wird (Box86, Box64) unter der MIT-Lizenz verbreitet.

Besonderheit des Projekts ist die Anwendung eines hybriden Ausführungsmodells, bei dem die Emulation nur für den Maschinencode der Anwendung selbst und spezifische Bibliotheken verwendet wird. Typische Systembibliotheken, einschließlich libc, libm, GTK, SDL, Vulkan und OpenGL, werden durch Varianten ersetzt, die für die Zielplattformen geeignet sind. Dadurch können Bibliotheksaufrufe ohne Emulation erfolgen, was zu einer erheblichen Leistungssteigerung führt.

Die Emulation von Code, für den es keine nativen Alternativen auf der Zielplattform gibt, erfolgt mithilfe der Technik der dynamischen Rekompilierung (DynaRec), die einen Satz von Maschinenbefehlen in einen anderen umwandelt. Im Vergleich zur Interpretation von Maschinenbefehlen zeigt die dynamische Rekompilierung eine fünf- bis zehnmal höhere Leistung.

In Leistungstests haben die Emulatoren Box86 und Box64 auf den Plattformen Armhf und Aarch64 die Projekte QEMU und FEX-emu erheblich übertroffen. In bestimmten Tests (glmark2, openarena) konnte die Leistung erzielt werden, die der Ausführung einer für die Zielplattform nativen Version entspricht. In Tests mit 7-zip und dav1d, die intensive Berechnungen durchführen, erreichte Box64 eine Leistung von 27 % bis 53 % im Vergleich zur nativen Anwendung (zum Vergleich: QEMU erzielte 5-16 %, und FEX-emu 13-26 %). Zusätzlich wurde ein Vergleich mit dem Emulator Rosetta 2 durchgeführt, der von Apple verwendet wird, um x86-Code auf Systemen mit dem ARM-Chip M1 auszuführen. Rosetta 2 erzielte in einem Test mit 7zip eine Leistung von 71 % im Vergleich zur nativen Version, während Box64 57 % erreichte.

Neue Versionen der Emulatoren Box86 und Box64 ermöglichen das Ausführen von x86-Spielen auf ARM-Systemen.

Was die Anwendungscompatibilität betrifft, so funktioniert von 165 getesteten Spielen etwa 70 % erfolgreich. Ungefähr 10 % laufen ebenfalls, jedoch mit bestimmten Vorbehalten und Einschränkungen. Zu den unterstützten Spielen gehören WorldOfGoo, Airline Tycoon Deluxe, FTL, Undertale, A Risk of Rain, Cook Serve Delicious und die meisten Spiele von GameMaker. Unter den Spielen, die Probleme aufweisen, sind Titel auf Basis der Unity3D-Engine genannt, die auf das Mono-Paket angewiesen sind, dessen Emulation aufgrund der in Mono verwendeten JIT-Kompilierung nicht immer reibungslos funktioniert und auch relativ hohe Grafikanforderungen hat, die auf ARM-Plattformen nicht immer erfüllbar sind. Der Austausch von GTK-Bibliotheken beschränkt sich derzeit auf GTK2 (der Austausch für GTK3/4 ist noch nicht vollständig implementiert).

Die wichtigsten Änderungen in den neuen Versionen:

  • Eine Anbindung für die Vulkan-Bibliothek wurde hinzugefügt. Unterstützung für die Grafik-API Vulkan und DXVK (Implementierung von DXGI, Direct3D 9, 10 und 11 über Vulkan) wurde hinzugefügt.
  • Die Anbindungen für die GTK-Bibliotheken wurden verbessert. Anbindungen für GStreamer und Bibliotheken, die üblicherweise in GTK-Anwendungen verwendet werden, wurden hinzugefügt.
  • Die anfängliche Unterstützung für die Architekturen RISC-V und PPC64LE wurde hinzugefügt (zum jetzigen Zeitpunkt nur im Interpreterschutzmodus).
  • Es wurden Korrekturen vorgenommen, um die Unterstützung für SteamPlay und die Proton-Schicht zu verbessern. Damit kann eine Vielzahl von Linux- und Windows-Spielen aus Steam auf AArch64-Platinen wie Raspberry Pi 3 und 4 ausgeführt werden.
  • Die Speicherverwaltung, die mmap-Funktion und die Überwachung von Speicherverletzungen wurden verbessert.
  • Die Unterstützung des systemaufrufs clone in libc wurde verbessert. Neue Systemaufrufe wurden hinzugefügt.
  • Im dynamischen Rekompilierungs-Engine wurde die Arbeit mit SSE/x87-Registern verbessert, die Unterstützung neuer Maschinenbefehle hinzugefügt, die Konvertierungen von float- und double-Zahlen optimiert sowie die Bearbeitung interner Übergänge verbessert. Das Hinzufügen der Unterstützung neuer Architekturen wurde vereinfacht.
  • Der ELF-Dateilader wurde verbessert.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster