Ist es möglich, eine x86-Binärdatei auf einem ARM-Prozessor auszuführen?

13693
Ryall

Ist es möglich, eine bereits kompilierte x86-Binärdatei in eine ARM-Binärdatei zu konvertieren / umzuwandeln?

Ich benutze ein BeagleBoard mit einer Ubuntu-Befehlszeile (Maverick) und möchte einen Ventrilo- Server ausführen, aber die von ihnen gelieferte x86-Programmdatei kann, soweit ich das beurteilen kann, nicht auf der Hardware ausgeführt werden (höchstwahrscheinlich aufgrund unterschiedlicher Architektur).

Leider habe ich keinen Zugriff auf die Quelle, damit ich sie nativ neu kompilieren kann.

Wenn nicht, gibt es eine andere Möglichkeit, die Binärdatei auszuführen (z. B. Emulation)?

6
Vor vielen Jahren gab es Emulatoren älterer x86-Systeme wie 80286-DOS-Maschinen für Acorn Risc OS-Maschinen. Dies könnte ein Ausgangspunkt sein, um zu sehen, ob die Beteiligten die Idee, heute zu leben, weiterentwickelt haben. Abgesehen davon ist dies eine interessante Frage, wenn sich ARM scheinbar in den Server-Bereich bewegt und x86-Binär-Apps verdrängt. Ein solcher Emulator könnte die Verschiebung von x86 in diesem Bereich erleichtern. therobyouknow vor 13 Jahren 1

3 Antworten auf die Frage

6
anddam

Möglicherweise möchten Sie zu einer alternativen Software wechseln, die von Haus aus für Ihre Architektur verfügbar ist. Murmeln und Murmeln fallen Ihnen ein.

murmeln und murmeln Homepage

Großartig, danke, ich wusste nicht, dass das existiert. Es könnte etwas Überzeugendes kosten, um die anderen dazu zu bringen, aber ich denke, dass die höchste Qualität gepaart mit der niedrigsten Latenzzeit enorm hilft. Ryall vor 13 Jahren 0
4
OneOfOne

Kurzversion: Wenn Sie keinen Quellcode haben, dann nein.

Lange Version: Sie können Qemu (oder Kvm oder Virtualbox usw.) verwenden und ein minimales x86-emuliertes System zum Ausführen des Servers verwenden.

1
Machado

Ich denke, die Antwort lautet "vielleicht". Normalerweise können Sie eine ausführbare Datei dekompilieren, wenn Sie genug darüber wissen. Wenn Sie den Code in eine Sprache dekompilieren, die einen ARM-Compiler enthält, und die Bibliotheken, die zum Kompilieren dieser Binärdatei auf Ihrer ARM-Plattform erforderlich sind, sollte dies möglich sein.

Beispiel: Wenn Ihr Ventrilo-Server in C-Quellcode dekompiliert werden kann und dieser Quellcode ANSI-Standard ist, verfügen Sie möglicherweise über ausreichend Unterstützung für Ihren ARM-Compiler, um den Code erneut zu kompilieren.

Ich weiß wirklich nicht, ob Sie dies legal tun können, da Sie eine Software zurückentwickeln würden, die Sie nicht der Eigentümer sind.

Nur ein kleines Problem hier: Die meisten dekompilierten Programme werden nicht ohne Änderung erneut kompiliert - Dekompilierer sind nicht so gut :( Filip Haglund vor 11 Jahren 0
"Wenn Sie genug davon wissen", deckt ein paar Jahre Mikroprozessorentwurf, Montage, Befehlssätze, Hex-Editoren usw. ab. Basic vor 8 Jahren 0
Nun, im speziellen Fall von OP hat er ein X86-kompiliertes Programm. Ich gehe davon aus, dass die Anzahl der verfügbaren X86-Dekompilierer gut ist. Ich gehe außerdem davon aus, dass Ventrilo, da es für die Kommunikation verwendet wird, möglicherweise keine höherwertige Bytecode-Sprache wie Java oder C # nutzt. Es kann also gut genug zu C ++ / C dekompilieren. Die X86-Assembly ist gut verstanden und Anweisungen können auf andere Architekturen portiert / simuliert werden. Es ist vielleicht nicht einfach, aber es ist definitiv machbar. Machado vor 8 Jahren 0
Weitere 2 Cent: Ich habe die Antwort auf meine persönlichen Erfahrungen bei der Portierung von Lua auf PalmOS vor einigen Jahren gestützt. Lua war (ist) zu 100% in ANSI-C, aber PalmOS hatte keinen ANSI-C-kompatiblen Compiler. Ich musste eine kleine Übersetzungsebene ohne Kenntnis der Motorola 68k-Architektur und / oder großer Kenntnis von C schreiben. Zum Glück funktionierte das "Ding", und ich gehe davon aus, dass dies mehr an Luas Schuld als an meinem Code liegt. :) Machado vor 8 Jahren 0