Ich habe die Geschichte des Computers gelesen und bin auf die IA-64-Prozessoren (Itanium) gestoßen. Sie klangen wirklich interessant und ich war verwirrt darüber, warum Intel sie fallen lassen würde.
Die Möglichkeit, explizit auszuwählen, welche 2 Anweisungen Sie in diesem Zyklus ausführen möchten, ist eine gute Idee, insbesondere, wenn Sie Ihr Programm in Assembly schreiben, z. B. einen schnelleren Bootloader.
Die Hunderte von Registern sollten für jeden Assembler-Programmierer überzeugen. Sie können im Grunde alle Funktionsvariablen in den Registern speichern, wenn keine anderen aufgerufen werden.
Die Möglichkeit, Anweisungen wie diese auszuführen:
(qp) xor r1 = r2, r3 ; r1 = r2 XOR r3
(qp) xor r1 = (imm8), r3 ; r1 = (imm8) XOR r3
versus tun müssen:
; eax = r1
; ebx = r2
; ecx = r3
mov eax, ebx ; first put r2 into r1
xor eax, ecx ; then set r1 equivalent to r2 XOR r3
mov eax, (imm32) ; first put (imm32) into r1
xor eax, ecx ; then set r1 equivalent to (imm32) XOR r3
Ich habe gehört, es liege an keiner Abwärts-x86-Vergleichbarkeit, aber Sie könnten dies nicht beheben, indem Sie einfach die Pentium-Schaltung hinzufügen und ein Prozessor-Flag hinzufügen, das es in den Itanium-Modus umschaltet (wie das Umschalten in den geschützten oder langen Modus).
All die großartigen Dinge hätten sie sicherlich einen Riesenschritt vor AMD gebracht.
Irgendwelche Ideen?
Leider bedeutet dies, dass Sie einen sehr fortgeschrittenen Compiler benötigen, um dies zu tun. Oder sogar eine pro spezifischem Modell der CPU. (Zum Beispiel würde eine neuere Version des Itanium mit einer zusätzlichen Funktion einen anderen Compiler erfordern).
Als ich in Visual Studio 2010 an einem WinForms-Projekt (Ziel war nur .NET 2.0) arbeitete, hatte ich ein Kompilierungsziel von IA-64. Das bedeutet, dass es eine .NET-Laufzeit gibt, die für IA-64 kompiliert werden konnte, und eine .NET-Laufzeit bedeutet Windows. Außerdem erwähnt Hamilton in seiner Antwort Windows NT. Ein vollwertiges Betriebssystem wie Windows NT bedeutet, dass ein Compiler in der Lage ist, IA-64-Maschinencode zu generieren.