C++ frontend только компилятор (преобразовывают C++ в C),

'instanceof' является на самом деле оператором, как + или - и я полагаю, что он имеет свою собственную инструкцию по байт-коду JVM. Это должно быть много быстро.

я не должен что, если у Вас есть переключатель, где Вы тестируете, если объект является экземпляром некоторого subsclass, то Ваш дизайн, возможно, должен был бы быть переделан. Рассмотрите снижение определенного для подкласса поведения в сами подклассы.

24
задан Tim Ring 2 December 2009 в 15:08
поделиться

6 ответов

Если вы используете LLVM , llvm-g ++ скомпилирует ваш код C ++ в битовый код LLVM, а llc имеет бэкэнд который преобразует битовый код в C.

Вы можете написать такие команды:

llvm-g++ -emit-llvm -c foo.cpp -o foo.o
llc -march=c <foo.o >foo.c
41
ответ дан 28 November 2019 в 22:33
поделиться

Comeau C ++ делает это.

18
ответ дан 28 November 2019 в 22:33
поделиться

Не могу помочь с Z8, но семейство Renesas M16C / M32C имеет GCC в наши дни - см. http://www.kpitgnutools.com/ для готовой кросс набор инструментов, размещенный в Windows. Сам еще не использовал его, но может быть лучшим вариантом, чем сторонний интерфейс C ++, тем более что ваш код уже нацелен на GCC на других платформах.

5
ответ дан 28 November 2019 в 22:33
поделиться

Comeau C ++ генерирует C в качестве вывода, и они, кажется, вполне счастливы перенести его для работы с различными внутренними компиляторами, хотя я не уверен в точных ценах на это.

Если вы хотите немного большего, свой собственный подход, вы можете купить лицензию на компилятор EDG C ++. Обычно он используется в качестве внешнего интерфейса (например, Comeau и Intel), но я считаю, что на момент поставки он включает в себя генератор кода, который производит C в качестве вывода. Однако ее лицензирование ориентировано больше на поставщиков компиляторов, поэтому лицензия дает вам много прав, но стоит довольно дорого.

2
ответ дан 28 November 2019 в 22:33
поделиться

Устарело, но, может быть, вы хотите попробовать cfront ?

Я оставлю это для информации - cfront не поддерживает исключения.

1
ответ дан 28 November 2019 в 22:33
поделиться

Из того, что я понял, поддержка c ++ в gcc для r8c / m16c / r32c не совсем зрелая и недостаточно хорошая для производственного кода. Но для r8c / m16c / m32c / r32c существует по крайней мере один компилятор, поддерживающий встроенный C ++, и это IAR, я думаю, Tasking также поддерживает встроенный C ++ на m16c.

1
ответ дан 28 November 2019 в 22:33
поделиться