Для разных микроархитектур пишется отдельный код, так как разные процессоры поддерживают разные инструкции
Платформа.NET:
Исходные тексты программ компилируются в специальное промежуточное представление (Microsoft Intermediate Language, часто употребляется сокращение IL или MSIL). Промежуточное представление содержит всю необходимую информацию о программе, но не привязано к какому-либо определенному языку программирования или к машинному коду какой-либо целевой платформы. Для запуска программы необходимо специально окружение, исполняющее программы, и библиотеки динамической поддержки (execution engine & runtime). Важной особенностью трансляции в.NET является то, что промежуточное представление не интерпретируется; вместо этого используется механизм компиляции времени исполнения, который генерирует машинный код. Подразумевается, что большинство программ, исполняемых на
платформе.NET, будет использовать многочисленные стандартные классы, предоставляющие базовую функциональность (от работы с данными до встроенных механизмов безопасности).
Платформа.NET предоставляет автоматическое управление ресурсами. Это решает многие распространенные проблемы, такие как утечки памяти, повторное освобождение ресурса и т.п.
Oсобенности платформы. NET позволяют добиться простоты повторного использования кода. Раньше платформа Win32 позволяла повторное использование только на уровне COM-компонент; теперь можно повторно использовать классы и наследовать от них свои приложения.
Самым ощутимым недостатком является существенное замедление выполнения программ. Это неудивительно, так как между исходным языком и машинным кодом вводится дополнительный уровень, MSIL. Однако промежуточное представление.NET с самого начала проектировалось с прицнлом на компиляцию времени исполнения (в отличие, например, от Java bytecode, который разрабатывался с прицелом на интерпретацию).
MSIL можно рассматривать как ассемблер некоторой виртуальной машины. MSIL представляет собой дополнительный уровень абстракции, позволяющий легко справляться с переносом кода с одной платформы на другую, в том числе, и с изменением разрядности платформы: в отличие от Java bytecode MSIL не завязан на 32 бита или какую-либо другую фиксированную разрядность. В данный момент существуют версии MSIL для мобильных 16- разрядных устройств (.NET Compact Framework), стандартная 32-разрядная версия и специальная версия для работы с получающими все более широкое распространение 64-разрядными устройствами.
Программы на IL Assembler можно писать в любом текстовом редакторе. Для компиляции исходного текста программы применяется ilasm.exe, поставляемый вместе с.NET Framework