私はコンピューターの歴史を読んでいて、IA-64(Itanium)プロセッサーに出会いました。彼らは本当におもしろそうに聞こえたので、Intelがそれらを落とすことにした理由について私は混乱していました。
そのサイクルで実行したい2つの命令を明示的に選択する機能は、特に高速なブートローダーなどのアセンブリでプログラムを作成する場合に最適です。
何百人ものレジスタは、任意のアセンブリプログラマのために説得しなければなりません。他の変数を呼び出さない場合、基本的にすべての関数変数をレジスタに保存できます。
このような指示を行う機能:
(qp) xor r1 = r2, r3 ; r1 = r2 XOR r3
(qp) xor r1 = (imm8), r3 ; r1 = (imm8) XOR r3
対すること:
; 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
x86の下位互換性がないためだと聞きましたが、Pentium回路を追加してItaniumモードに切り替えるプロセッサフラグを追加するだけでは修正できません(保護モードまたはロングモードに切り替えるなど)
それについてのすべての素晴らしいことは、AMDの前に彼らを巨大な飛躍に追いやったでしょう。
何か案は?
残念ながら、これを行うには非常に高度なコンパイラが必要になります。または、CPUの特定のモデルごとに1つです。(たとえば、追加機能を備えた新しいバージョンのItaniumでは、異なるコンパイラが必要になります)。
Visual Studio 2010でWinForms(ターゲットは.NET 2.0のみ)プロジェクトで作業していたとき、IA-64のコンパイルターゲットがありました。つまり、IA-64用にコンパイルできる.NETランタイムがあり、.NETランタイムはWindowsを意味します。さらに、ハミルトンの答えはWindows NTに言及しています。Windows NTのような本格的なOSを使用するということは、IA-64マシンコードを生成できるコンパイラがあることを意味します。