фрэймворки
Nov. 5th, 2008 03:03 amВсе краем уха где-то слышали, что .NET MSIL-код - интерпретируется. И я слышал. Еще большинство слышало, что для оптимизации его компилируют в native code. Но не всегда.
В итоге, поиски интерпретатора MSIL привели... ни к чему.
Интерпретаторов MSIL нет. Все имеющиеся в природе closed- и open-source реализации - только компилирующие :(
MS .NET Framework - компилирует в x86/x64/IA64 (Win) native, интерпретатора нет
MS .NET Compact Framework (XNA, Silverlight) - компилирует в ARM/PPC/MIPS/x86/x64 (Win/Xbox/WinMobile) код, интерпретатора нет
MS .NET Micro Framework - при билде (!) компилирует в native или direct-threaded код, в зависимости от характеристик устройства. Компиляция производится при билде, а не в run-time (т.е. сборки, не обработанные NGEN'ом, просто отказываются запускаться)
Rotor (SSCLI) - компилирует в x86 native
Mono - до версии 0.2х интерпретировал, теперь там есть два различающихся по оптимальности компилятора. Внимательный просмотр кода версии 2.0.1 следов интерпретатора не нашел (хотя место, куда воткнуть, в принципе есть)
Net60 Compact Framework - компилирует в ARM (Symbian) код на лету
Portable.NET, он же dotGNU - компилирует в direct-threaded код на лету
DotNetAnywhere - компилирует в direct-threaded код на лету.
CrossNet - генерирует C++ код
Volta - генерирует JavaScript код (с одной стороны, это ахтунг, с другой стороны, интерпретатор MSIL на JS был бы еще на два порядка медленнее)
Усе, приехали. Если кто вдруг знает еще дотнет-рантаймы :-D - буду рад узнать. Особенно, если это будет таки чистый MSIL интерпретатор.
А, да. direct-threaded code - это нечто среднее между байткодом и native, по эффективности сравнимо с native кодом, который генерирует неоптимизирующий компилятор.
В итоге, поиски интерпретатора MSIL привели... ни к чему.
Интерпретаторов MSIL нет. Все имеющиеся в природе closed- и open-source реализации - только компилирующие :(
MS .NET Framework - компилирует в x86/x64/IA64 (Win) native, интерпретатора нет
MS .NET Compact Framework (XNA, Silverlight) - компилирует в ARM/PPC/MIPS/x86/x64 (Win/Xbox/WinMobile) код, интерпретатора нет
MS .NET Micro Framework - при билде (!) компилирует в native или direct-threaded код, в зависимости от характеристик устройства. Компиляция производится при билде, а не в run-time (т.е. сборки, не обработанные NGEN'ом, просто отказываются запускаться)
Rotor (SSCLI) - компилирует в x86 native
Mono - до версии 0.2х интерпретировал, теперь там есть два различающихся по оптимальности компилятора. Внимательный просмотр кода версии 2.0.1 следов интерпретатора не нашел (хотя место, куда воткнуть, в принципе есть)
Net60 Compact Framework - компилирует в ARM (Symbian) код на лету
Portable.NET, он же dotGNU - компилирует в direct-threaded код на лету
DotNetAnywhere - компилирует в direct-threaded код на лету.
CrossNet - генерирует C++ код
Volta - генерирует JavaScript код (с одной стороны, это ахтунг, с другой стороны, интерпретатор MSIL на JS был бы еще на два порядка медленнее)
Усе, приехали. Если кто вдруг знает еще дотнет-рантаймы :-D - буду рад узнать. Особенно, если это будет таки чистый MSIL интерпретатор.
А, да. direct-threaded code - это нечто среднее между байткодом и native, по эффективности сравнимо с native кодом, который генерирует неоптимизирующий компилятор.