Beste Möglichkeit x86 Anwendungen zu starten?

  • Guten Tag,

    ich suche eine möglichkeit x86 Programme automatisch aus zu führen. Mir kam da bis jetzt Windows 10 (Windows on Arm) in den Sinn, dies ist aber reine Hardware-Vergewaltigung.

    Ich müsste die beiden Programme installieren das diese laufen, eine möglichkeit das unter Linux zu installieren gibt es leider nicht.


    Geht das überhaupt? Wenn ja, was könnt ihr mir empfelen?


    LG uknwn

  • Du könntest es mit Wine versuchen ob die Anwendungen damit laufen. So lange diese Anwendungen keine spezifischen Funktionen einer x86 CPU nutzen klappt das meist ganz gut, aber nicht mit 64 Bit Anwendungen. Anderer Ansatz wäre ein Qemu das eine x86 CPU Emuliert, aber ernsthaft damit arbeiten willst du vermutlich nicht :)

  • Ich denke wir sollten uns von "x86" CPU verabschieden... das ist nur ein kleiner Teil des ganzen Problems.

    Ein "x86" Programm sagt noch nichts über die Umgebung aus ("Linux, OS/2, WIN, DOS). Ohne eine solche Information ist jede Beratung nur Theorie.

  • Ein "x86" Programm sagt noch nichts über die Umgebung aus ("Linux, OS/2, WIN, DOS).

    Richtig, die Prozessorachitektur ist im Grunde erst wichtig wenn ein Programm diese auch nutzt. Ein Assembler Programm was sehr Hardwarenahe geschrieben wurde wird nicht funktionieren auf einer anderen Hardware, ein Windows oder Linux Programm was im Grunde ja nur eine Ansammlung von ABI Aufrufen ist und nichts mit der Hardware direkt tut kann auf jeder Architektur laufen wenn die ABI vorhanden ist. Wine zum Beispiel emuliert ja keine Hardware sondern stellt nur die Systemfunktionen zur Verfügung die ein Programm nutzt.

    Heute arbeitet ja kaum noch jemand direkt mit der Hardware, oder wann hat von euch das letzte mal jemand in seinem Programm Prozessorregister direkt angesprochen um etwas zu erledigen?

  • InterGeek Ständig, also eigentlich immer, jedes Programm. Denn entweder das Programm oder der Interpreter dafür läuft ja auf einem Prozessor. Deine Antworten klingen so als müsste ein Programm irgendwelche *speziellen* Befehle oder Register benutzen, damit man es nicht einfach so mit Wine laufen lassen kann. Das stimmt aber nicht. Jeder ganz normale x86-Befehl und jedes normale x86-Register muss von der CPU ausführbar sein, oder eben emuliert werden. Und da Wine keine CPU emuliert, kann kein noch so simples x86-Programm mit Wine auf einem ARM-Prozessor direkt ausgeführt werden. Ohne Wine auch nicht.

    hajos118 Nein das ist kein kleiner Teil des Problems. Das Problem ist x86 Anwendungen starten. Das steht so wörtlich im Betreff und im ersten Beitrag. Und da wird auch Windows 10 erwähnt, also handelt es sich wohl um x86-Windows-Anwendungen. Falls dem nicht so ist, müsste man das mit dem Fragesteller klären. Aber selbst einfach die Torpfosten verschieben und eine ganz andere Frage beantworten, ist eher nicht so hilfreich.

    “Dawn, n.: The time when men of reason go to bed.” — Ambrose Bierce, “The Devil's Dictionary”

  • Denn entweder das Programm oder der Interpreter dafür läuft ja auf einem Prozessor.

    In modernen Systemen läuft kein Programmcode mehr direkt auf einer CPU. Windows und Co sind quasi die Interpreten des Programms. Wenn du einen modernen Compiler nutzt, dann kommt dort kein auf einem Prozessor ausführbares Ergebnis raus, sondern etwas das dein Betriebssystem versteht und dann ausführt. Rein von der Sicherheit wäre es heute ein Supergau wenn ein gewöhnliches Programm beliebigen nativen Code ausführen könnte. Heute ist das ja alles etwas anders als damals. Früher hast du ein Programm das "Print(1+1)" macht compiliert und dann war dein Ergebnis in der Lage diese Aufgabe auf deiner Hardware auszuführen. Heute ist das gleiche Programm nur noch eine ELF die dem Betriebssystem über eine ABI sagt "Hier liebes System rechne mal 1+1" und dann kommt das Ergebnis zurück. Versuche heute einmal ein Windows Programm zu schreiben das direkt auf die Hardware zugreifen will an Windows vorbei. Das wird nicht ausgeführt.

  • InterGeek Das ist Unsinn. Das Betriebssystem stellt eine API zur Verfügung, das ist auch nichts neues das war auch früher schon so, aber die Programme liefen und laufen immer noch auf der CPU. Wenn ich ein C-Programm schreibe das so etwas wie ``print(1 + 1)`` macht, dann wird da in der Tat eine ELF-Datei erstellt — die Maschinencode für den Zielprozessor enthält und auf dem dann auch ausgeführt wird. Und eine ELF-Datei für ARM wird nicht auf magische Weise auf einem x86-Linux durch das Betriebssystem ausgeführt, oder umgekehrt wird auf einem ARM-Linux keine ELF-Datei für x86 ausführbar. Weder Linux noch Windows interpretieren Programmcode — das machen die jeweiligen CPUs und die sind nicht beliebig austauschbar.

    “Dawn, n.: The time when men of reason go to bed.” — Ambrose Bierce, “The Devil's Dictionary”

  • In modernen Systemen läuft kein Programmcode mehr direkt auf einer CPU.

    Sämtlicher Programmcode läuft auf der CPU ab, egal ob direkt oder virtualisiert.
    Ansonsten könnte man die CPU einfach ausbauen und viel Geld sparen.

    Heute ist das gleiche Programm nur noch eine ELF die dem Betriebssystem über eine ABI sagt "Hier liebes System rechne mal 1+1" und dann kommt das Ergebnis zurück.

    Heute? ELF wurde 1995 eingeführt.

    Es ist nur ein Archiv-Format für ausführbare Dateien, die in Sektionen unterteilt sind.

    Um 1 + 1 zu rechnen, braucht man weder syscalls, noch Bibliotheken.

    C kann das out of the box. Die CPUs können das auch, seitdem man die ALU erfunden hat.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!