Вышла новая версия LLVM (http://llvm.org/) (Low Level Virtual Machine), - коллекции утилит и библиотек построенных на основе GCC 4.0.1, компилирующих Си/С++ программы в промежуточный байткод RISC подобных виртуальных инструкций (низкоуровневая виртуальная машина с многоуровневой системой оптимизации).
Наиболее интересное применение - создание JIT (Just-in-time compilation) компиляторов, транслирующих платформонезависимый псевдокод в машинные инструкции непосредственно в момент выполнения программы.
Другие открытые наработки в области JIT компиляторов:
- GNU lightning (http://www.gnu.org/software/lightning/lightning.html);
- DotGNU Project (http://www.dotgnu.org/);
- Libjit (http://www.southern-storm.com.au/libjit.html).URL: http://llvm.org/releases/1.7/docs/ReleaseNotes.html
Новость: http://www.opennet.me/opennews/art.shtml?num=7375
IMHO статическая компиляция байткода в машинный лучше. Зачем каждый раз при запуске приложения в байткоде его снова компилировать, да ещё в процессе выполнения, если можно сделать это один раз. Фирма Бориса Бабаяна вроде тоже идею статической двоичной компиляции продвигала.
а если код динамически изменяется?
Полиморфный платформонезависимый вирус? :)
Например, СУБД. Компиляция планов выполнения запросов.
http://zabivator.livejournal.com/290293.html
динамическая оптимизация кода. В динамике гораздо легче предсказать бранч чем в случае статической оптимизации например, потому как вм знает предисторию итд итп.
а как насчет QEMU?