Здравствуйте, Serginio1, Вы писали:
S>>С точки зрения VES — безусловно да. На входе данные в общепринятом формате, на выходе — исполняемый код.
S> Данные в общепринятом формате это что?
ECMA-335 Partition III: CIL Instruction Set.
S> Почему этот формат легко декомпилировать в C# или Delphi.Net?
Коротко: везение.
Подробней: по двум причинам:
* из бинарного представления восстановить il не сложнее, чем набросать простенький дизассемблер.
* до недавнего времени конструкции шарпа легко и однозначно сопоставлялись с последовательностями в il.
Но начиная с третьего шарпа всё больше логики декомпиляторов — это эвристики, которые легко ломаются на обновлениях компилятора или при использовании il-реврайтеров. Халява кончилась.
S>>и до генерации RyuJIT IR напрямую из текстовых исходников.
S> То есть это язык который компилируется в машинные коды?
UPD: вопрос про RyuJIT IR?
Если да — Это вообще не язык, это ещё одно представление потока инструкций (по аналогии с gcc ir или llvm ir), заточено под быстрые оптимизации и лёгкую трансляцию в бинарный код.
Тем не менее даже такой изврат наотлично будет работать с остальным managed-кодом, чем с незапамятных времён
пользовались отдельные извращенцы (см секцию Native Injection).
Если нет и вопрос про IL — см выше
С CIL вечно путаница — под ним понимают и CIL bytecode и CIL как язык, из контекста обычно понятно
для преобразования в бинарный код сам язык, очевидно, не нужен.
S>>Вы сначала определитесь, какой именно уровень и чего именно мы обсуждаем, затем можно продолжать будет.
S> Ну дык мы говрим о натягивании понятия VM на все, что имеет байт код.
А, бесполезное это дело. Нужно ещё знать контекст, в котором обсуждаем. Иначе под VM кучу разных вещей c разных логических уровней набивается. Про что и писал выше
Если говорить про CLI как про абстрактную модель, то там VM разумеется присутствует, но когда дело доходит до готовых бинарников, то вся роль "VM" сводится к набору runtime services. Конкретный их состав зависит от таргетинга.
S> Например по твоему CIL это не байт код.
Так CIL или CLI? разные ж вещи
Если CIL — тыкни носом, где я это писал плиз.