>виртаульная машина не является отдельной архитектурой
Что мешает реализовать ее в железе? Никогда на слышали про аппаратные Smalltalk- и Lisp-машины? Что мешает исполнять на виртуальной машине опкоды реальной железной? Никогда не слышали про QEMU?
>qemu не является отдельной архитектурой, а всего лишь реализует
У вас проблемы с пониманием письменной речи. Никто qemu отдельной архитектурой не называл, она была приведена как пример программной реализации "настоящих" архитектур, как вы их называете.
И то что просит автор, не обязано быть конвертором в язык (например в Java). Речь идет о генерации байт-кода для платформы Java. Чем это отличается от генерации машинного кода?
У 99% человечишек проблемы с пониманием конструкций из более чем трёх слов. Так что это нормально.
> Речь идет о генерации байт-кода для платформы Java. Чем это отличается от генерации машинного кода?
Ничем. Просто исторически сложилось, что компиляторы под виртуальные машины кросскомпиляторами не называют - по одной простой причине - скомпилированный код может быть немедленно исполнен.
> Ничем. Просто исторически сложилось, что компиляторы под виртуальные машины кросскомпиляторами не называют - по одной простой причине - скомпилированный код может быть немедленно исполнен.
Не спорю. Именно это, собственно, я и сообщил первым комментарием, однако затем взглянул на проблему под другим углом.
>Это не ерунда. Это именно кросс-компиляция, а в качестве целевой архитектуры - виртуальная машина.
это может быть реализовано как кросс-компиляция, но...
С++ рассчитан на абстрактную машину с плоским адресным пространством и указателями. Ява и .нет не предоставляют такой абстрактной машины.
Хотя абстрактную машину с плоским адресным пространством может и можно эмулировать массивом из байтов, но сильно сомневаюсь, что подобное чудо интересует вопрошавшего.
>С++ рассчитан на абстрактную машину с плоским адресным пространством и указателями. Ява и .нет не предоставляют такой абстрактной машины.
>Хотя абстрактную машину с плоским адресным пространством может и можно эмулировать массивом из байтов, но сильно сомневаюсь, что подобное чудо интересует вопрошавшего.
Необязательно. Можно, например, всего лишь гарантировать побайтовый доступ к любой области памяти под существующими объектами и к динамически выделяемой памяти. Все прочие указатели будут просто недействительными, что и неплохо.
>Необязательно. Можно, например, всего лишь гарантировать побайтовый доступ к любой области памяти под существующими объектами и к динамически выделяемой памяти. Все прочие указатели будут просто недействительными, что и неплохо.
Думаю, не прокатит. Хотя бы как ты сделаешь placement new & union?
сейчас не помню ссылку (статья была на грохнувшемся винте) -- что-то было в направлении LLVM/Ch/ANTLR про средство для трансформации исходников на С++. Что-то вроде CECIL -- там С++ транслировался в CIL, потом на ANTLR (ЕМНИП) парсер его разбирал.
ещё недавно в новостях было про C++ компилятор в флешЪ (в ActionScript-байткод) , им даже кваку с думой собирали.. что-то на основе LLVM, можно например им собрать, а потом уже этот флеш-байткод конвертировать в JVM (google http://www.openlaszlo.org/ и т.п.)