Я плохо знаком с Моно и просто запущенный недавно. Моно программа, компилируются от C# до собственного кода, чтобы смочь работать на нескольких ОС?
и также, я видел скринкаст на MonoTouch, который говорит мне, что монокасание (особенно) компилирует все вниз в Собственный компонент для C#, чтобы смочь работать на iPhone.
Я, вполне путают.
Mono по умолчанию компилируется в промежуточный байт-код, который затем запускается на виртуальной машине. Этот байт-код является переносимым, но не собственным машинным кодом.
В Mono есть компилятор AOT , который будет создавать образы в машинном коде, когда байт-код не подходит.
Практически все платформы .NET, как Microsoft (включая настольные, компактные и микрофреймворки), так и сторонние (например, моно), сначала компилируют все на общий промежуточный язык, который является переносимым, затем своевременная компиляция во время выполнения в собственный код. Некоторые не имеют JIT и просто интерпретируют IL напрямую.
Родной код, очевидно, непереносим.
Это поможет?
Сам Mono компилируется в байт-код .NET CLR, что позволяет ему выполняться на любой платформе с поддержкой .NET или Mono. Эти исполняемые файлы не состоят из собственных машинных инструкций; они точно в срок компилируются в машинный код средой выполнения в системе, выполняющей его. Короче говоря, двоичные файлы Mono переносимы.
Что касается CocoaTouch, его компиляция в собственный код была необходима, потому что Apple не разрешает использование таких систем, как Mono, на iPhone. Это исключительный случай; обычные программы Mono этого не делают.
Да, вы можете писать на C # или других языках dotnet, таких как VB.Net, при компиляции с Mono. Mono компилирует ваш код в IL (промежуточный язык), который вы развертываете, а затем получает JIT (как раз вовремя), скомпилированный при запуске.
Mono может работать на нескольких платформах, таких как Windows, Mac OSX, Linux и даже iPhone. Хотя с реализацией для iPhone, я считаю, что ваш код на самом деле безобразно скомпилирован в Objective C, который затем компилируется в собственный код, а не в IL.
Ядром проекта Mono является JITter для MSIL (промежуточный язык, создаваемый компиляторами .NET).
Конечно, Just-In-Time Compiler по-прежнему остается компилятором, и вы можете просто взять собственный код, созданный JIT-процессом, и запустить его позже. В зависимости от JITter он может явно предоставлять средства для этого.