64 ビット システムのプログラミングにはさまざまな方法がありますか?
はいといいえ。いいえ、C のような言語でコーディングしている場合でも、ほとんどの場合、プラットフォームに依存しないコードを記述できる必要があるという意味で。 !) プログラムの重要な部分を高速化するのに役立ちます。たとえば、利用可能な特別な指示を使用できる場合があります。
同じようにコンパイルされていますか?
繰り返しますが、イエスとノーです。システム言語用のコンパイラは、すべてのアーキテクチャで同じように機能しますが、もちろん詳細は少し異なります。たとえば、コンパイラはアーキテクチャに関する知識を使用して、可能な限り効率的なコードを生成しますが、アーキテクチャ間の違いや、呼び出し規約などのその他の詳細にも注意を払う必要があります。
別の 64 ビット アプリの主な利点は何ですか?
通常のデスクトップ CPU、つまり x86 アーキテクチャについて質問していると思いますが、8 ビットから 128 ビットの範囲のワード サイズを持つ他のアーキテクチャがあることに注意してください。通常、人々は単一のアーキテクチャ (つまり、特定のマシン用) を対象とするプログラムをコンパイルしますが、それだけです。
ただし、x86 は少し特殊です。CPU は、16 ビット、32 ビット、および 64 ビット (その他の違いの中でも特に) 異なるワード サイズの異なるモードで動作できます。効果的に、単一の CPU に複数の ISA (命令セット アーキテクチャ) を実装します。
これは下位互換性を維持するために行われたものであり、商業的な成功の鍵となっています。人々が最初の 64 ビット対応の CPU を購入したとき、まだ 32 ビットのオペレーティング システムとソフトウェアを使用していた可能性が最も高いため、互換性が本当に必要だったことを考慮してください。他のオプションは、それをエミュレートする (パフォーマンスが低い) か、すべての一般的な顧客ソフトウェアが移植されていることを確認する (独立した独自のベンダーが多数存在する Windows のようなエコシステムでは実現が難しい) ことです。
32 ビット x86 よりも 64 ビット x86 にはいくつかの利点があります。より多くのアドレス指定可能なメモリ、より多くの整数レジスタ、2 倍の XMM レジスタ、より優れた呼び出し規則、保証された SSE2... 唯一の欠点は、64 ビット ポインターを使用することです。より多くのメモリとキャッシュの使用量。実際には、多くのプログラムは x64 でわずかに高速 (たとえば 10%) になると期待できますが、ポインターを多用するプログラムではパフォーマンスが低下することさえあります。