I found I can select target machine under project properties. There is a large list:
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)
I have the following questions:
- What is the meaning of that acronym?
- Required hardware?
- Required software and/or operating system?
- It is possible to build binaries on x86 system? If yes, how to configure Visual Studio 2008 Express?
- Does any change must be made in code if it compiles fine for x86, x64, itanium?
This setting is for configuring what CPU architecture to compile your source code for. Depending on the architecture you choose, you'll get a different binary.
A binary compiled for a specific CPU architecture has a structure that, after loaded into memory, the CPU can understand. There's, for example, commands for the CPU to execute, and data to load.
Whether or not the same source code can be compiled for different architectures depends on what you're doing. You'll usually be OK, but it's easy to break cross-compatibility by doing data-size sensitive stuff, manipulating memory directly, depending on architecture-specific features, etc.
Also, it's easy to write code which depends on features available in a specific OS. This isn't directly related to this setting, but of course if you're calling e.g. a Windows API that's only available on the PC and trying to compile for ARM, it won't work - There won't be any library compiled for ARM which defines that function to link with.