Я работаю над динамическим языком (который компилируется в C ++) для микроконтроллеров, будучи парнем из CS, я решил сначала сделать это правильно, а потом беспокоиться об оптимизации.Ниже описывается структура моей объектной системы:
Base (Interface)
|
|---- Number (Interface)
| |
| |-- Int
| |-- Float
|
|---- Char
|
|---- Sequence (Interface)
| |
| |-- LinkedList
|
|---- Function (Interface)
|
|-- Built-in Functions (Functors)
Теперь, когда все работает, размер сгенерированного кода стал проблемой, каждая операция должна быть представлена функтором, (+, - while, for и т. Д...) так что я предполагаю, что это приводит к увеличению размера кода, или я передаю все как базовый класс, а затем преобразую по мере необходимости, поэтому у меня есть много приведений, в настоящее время простой цикл включения / выключения светодиодов стоит 15 кбайт, хотяне использовать все типы объектов (6 функторов + 4 целых числа).
Я пробовал различные варианты avr-gcc, которые не уменьшали размер кода.Поэтому мне интересно, как я могу определить, какая часть кода занимает так много места?