The question is pretty much incorrect, but you need to understand what is "compilation" in .NET.
The source code is compiled into
CIL. This way, executable code (PE file) of the compiled
assembly is abstracted (in a general case) from particular OS and CPU
instruction-set architecture.
When the executable file is loaded, the
JIT compilation comes into play. Typically, all methods are compiled into the CPU instructions on demand, as each of the methods used is called for the first time.
Please see:
http://en.wikipedia.org/wiki/Common_Intermediate_Language[
^],
http://en.wikipedia.org/wiki/Just-in-time_compilation[
^].
More traditional model is compilation to
object files which are later linked together by a separate program called
linker, to make an executable, which is them totally
platform-dependent. Please see:
http://en.wikipedia.org/wiki/Compiler[
^],
http://en.wikipedia.org/wiki/Object_file[
^],
http://en.wikipedia.org/wiki/Linker[
^].
See also:
http://en.wikipedia.org/wiki/Portable_Executable[
^].
—SA