Frage

Eine Sache habe ich Verständnis fehlt an ist, wie kann für eine Intel-CPU Arbeit auf einem AMD-CPU kompilierten Code.

Mein Base Verständnis ist, dass, wenn Sie C-Code, zum Beispiel, der Compiler macht den Quellcode in Maschinensprache kompiliert, die Anweisungen für einen bestimmten Prozessor haben wird. So müssen Sie mit einem Compiler kompilieren, für was auch immer Plattform Ihrer Anwendung zu verwenden. Warum nicht benötigen Sie einen Compiler für AMD im Vergleich zu Intel und haben Software für einen bestimmten Prozessor kaufen?

Ich weiß, dass AMD-Prozessoren und Intel-Prozessoren eine gewisse Kompatibilität in den älteren x86-Befehle teilen; was ich würde gerne wissen, wie sie das tun? Ich meine, es ist nicht wie AMD oder Intel sich gegen rufen und ihnen ihre Geschäftsgeheimnisse zu erzählen, so wie sie Befehlssätze erstellen, die kompatibel sind?

Sie alle Kompatibilität immer noch auf der Grundlage der 386-Befehlssatz, mit einem Bündel von Aussagen wie „WENN AMD CPU, tun dies SONST WENN INTEL tun“?

War es hilfreich?

Lösung

AMD und Intel x86 und x86-64-CPUs sind fast vollständig kompatibel. Beide alle x86 und x86-64 implementieren. Sie haben jeweils ihre eigenen Erweiterungen (wie MMX und 3DNow), aber Compiler sie im Allgemeinen nicht verwenden, wenn Sie ihnen sagen. Heutzutage unterstützen sowohl AMD und Intel fast alle einzelnen Erweiterungen des anderen. Die einzige Zeit, die Sie haben über den Unterschied zu befürchten ist, wenn Sie wirklich Low-Level-Kernel Sachen zu tun.

Durch die Art und Weise, stellen Sie die Anweisung ist nicht wirklich ein „Geschäftsgeheimnis.“ Die Implementierung ist. Beide Unternehmen produzieren Dokumentation auf dem Befehlssatz, so dass jeder kann sie kopieren. Der Grund dafür ist wahrscheinlich, dass, wenn mehr Unternehmen produzieren kompatibele Chips wird mehr Software für diesen Befehlssatz geschrieben werden, so dass mehr Menschen diese Chips kaufen. x86 / x86-64 ist im Grunde die Standardarchitektur für Desktops, dass die Menschen zu gewährleisten werden auch weiterhin Intel und AMD-Chips kaufen. Intel und AMD haben sehr unterschiedliche Implementierungen, sie einfach den gleichen Code ausführen.

Andere Tipps

Eigentlich haben sie eine gegenseitige Lizenzvereinbarung. Information und Innovation flossen von Intel auf AMD zurück in den 90er Jahren, als AMD eine zweite Quelle von 386 und 486 Prozessoren war, und dann von AMD zu Intel, wenn Intel die x86-64-Erweiterungen angenommen.

Beachten Sie auch, dass die Befehlssätze für diese Prozessoren öffentlich dokumentiert sind; typischerweise ein Anbieter einen neuen Satz von Anweisungen erfinden, und eine oder zwei Generationen später die anderen Anbieter werden kompatible Erweiterungen implementieren. Als solche, anstatt IF 386 .... haben Sie etwas mehr entlang der Linien von IF SSE4 IS UNTERSTÜTZTEN ..., ohne Rücksicht auf den bestimmten Anbieter.

Beide Anbieter den gleichen Befehlssatz implementieren, so dass, wenn die kompilierte Code in Maschinenbefehle eingeschaltet wird, werden sie auf beiden Chips arbeiten. Allerdings gibt es einige spezielle Befehlssätze wie SSE, die speziell für einen Anbieter oder eine andere sein kann. Wenn Sie für eine Anwendung zur Verbesserung der Leistung möchten, können Sie Laufzeitprüfungen machen diese Funktionen zu verwenden, wenn verfügbar.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top