Моно компиляция C# и собственному компоненту?

Я плохо знаком с Моно и просто запущенный недавно. Моно программа, компилируются от C# до собственного кода, чтобы смочь работать на нескольких ОС?

и также, я видел скринкаст на MonoTouch, который говорит мне, что монокасание (особенно) компилирует все вниз в Собственный компонент для C#, чтобы смочь работать на iPhone.

Я, вполне путают.

11
задан kiamlaluno 16 August 2010 в 22:21
поделиться

5 ответов

Mono по умолчанию компилируется в промежуточный байт-код, который затем запускается на виртуальной машине. Этот байт-код является переносимым, но не собственным машинным кодом.

В Mono есть компилятор AOT , который будет создавать образы в машинном коде, когда байт-код не подходит.

21
ответ дан 3 December 2019 в 01:15
поделиться

Практически все платформы .NET, как Microsoft (включая настольные, компактные и микрофреймворки), так и сторонние (например, моно), сначала компилируют все на общий промежуточный язык, который является переносимым, затем своевременная компиляция во время выполнения в собственный код. Некоторые не имеют JIT и просто интерпретируют IL напрямую.

Родной код, очевидно, непереносим.

Это поможет?

7
ответ дан 3 December 2019 в 01:15
поделиться

Сам Mono компилируется в байт-код .NET CLR, что позволяет ему выполняться на любой платформе с поддержкой .NET или Mono. Эти исполняемые файлы не состоят из собственных машинных инструкций; они точно в срок компилируются в машинный код средой выполнения в системе, выполняющей его. Короче говоря, двоичные файлы Mono переносимы.

Что касается CocoaTouch, его компиляция в собственный код была необходима, потому что Apple не разрешает использование таких систем, как Mono, на iPhone. Это исключительный случай; обычные программы Mono этого не делают.

5
ответ дан 3 December 2019 в 01:15
поделиться

Да, вы можете писать на C # или других языках dotnet, таких как VB.Net, при компиляции с Mono. Mono компилирует ваш код в IL (промежуточный язык), который вы развертываете, а затем получает JIT (как раз вовремя), скомпилированный при запуске.

Mono может работать на нескольких платформах, таких как Windows, Mac OSX, Linux и даже iPhone. Хотя с реализацией для iPhone, я считаю, что ваш код на самом деле безобразно скомпилирован в Objective C, который затем компилируется в собственный код, а не в IL.

2
ответ дан 3 December 2019 в 01:15
поделиться

Ядром проекта Mono является JITter для MSIL (промежуточный язык, создаваемый компиляторами .NET).

Конечно, Just-In-Time Compiler по-прежнему остается компилятором, и вы можете просто взять собственный код, созданный JIT-процессом, и запустить его позже. В зависимости от JITter он может явно предоставлять средства для этого.

1
ответ дан 3 December 2019 в 01:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: