1

プロジェクトのプロパティでターゲット マシンを選択できることがわかりました。大きなリストがあります:

MachineX86 (/MACHINE:X86)
MachineAM33 (/MACHINE:AM33)
MachineARM (/MACHINE:ARM)
MachineEBC (/MACHINE:EBC)
MachineIA64 (/MACHINE:IA64)
MachineM32R (/MACHINE:M32R)
MachineMIPS (/MACHINE:MIPS)
MachineMIPS16 (/MACHINE:MIPS16)
MachineMIPSFPU (/MACHINE:MIPSFPU)
MachineMIPSFPU16 (/MACHINE:MIPSFPU16)
MachineMIPSR41XX (/MACHINE:MIPSR41XX)
MachineSH3 (/MACHINE:SH3)
MachineSH3DSP (/MACHINE:SH3DSP)
MachineSH4 (/MACHINE:SH4)
MachineSH5 (/MACHINE:SH5)
MachineTHUMB (/MACHINE:THUMB)
MachineX64 (/MACHINE:X64)

次の質問があります。

  1. その頭字語の意味は何ですか?
  2. 必要なハードウェア?
  3. 必要なソフトウェアやオペレーティング システムは?
  4. x86 システムでバイナリをビルドすることは可能ですか? はいの場合、Visual Studio 2008 Express を構成する方法は?
  5. x86、x64、Itanium で問題なくコンパイルできる場合、コードを変更する必要はありますか?
4

2 に答える 2

2

この設定は、ソース コードをコンパイルする CPU アーキテクチャを構成するためのものです。選択したアーキテクチャに応じて、異なるバイナリが得られます。

特定の CPU アーキテクチャ用にコンパイルされたバイナリには、メモリにロードされた後、CPU が理解できる構造があります。たとえば、CPU が実行するコマンドとロードするデータがあります。

同じソース コードを異なるアーキテクチャ用にコンパイルできるかどうかは、何をしているかによって異なります。通常は問題ありませんが、アーキテクチャ固有の機能に応じて、データサイズに敏感なことをしたり、メモリを直接操作したりすることで、相互互換性を簡単に破ることができます。

また、特定の OS で利用可能な機能に依存するコードを書くのも簡単です。これはこの設定とは直接関係ありませんが、もちろん、たとえば PC でのみ使用可能な Windows API を呼び出して ARM 用にコンパイルしようとすると、動作しません - 用にコンパイルされたライブラリはありません。リンクする関数を定義する ARM。

于 2013-12-10T22:32:32.667 に答える