Перейти к содержанию
    

Большой расход памяти в NIOS

создал пустой проект. в main.c

int main()
{
    for(;;)
    ;
    return 0;
}

собрал. программа получилась размером 2.3 кб.

переименовал main.c в main.cpp. пересобрал. размер кода получился 33 кб. куда утекает память программ? Мож какой ключ дополнительный указать в BSP, чтобы с++ не жрал память программ?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я могу ошибаться, но дополнительная память требуется для реализации плюсов к С.

Конструкторы, деструкторы и пр. автоматика даром не даётся.

Можно попробовать выключить флаг enable_c_plus_plus в BSP hal...

Но тогда конструкции С++ будут запрещены.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у плюсов рантайм пожирнее, да. можете objdump сделать, чтобы детали посмотреть

Могу.

objdump.7z

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

так и есть, гляньте таблицу символов, это все плюсовый рантайм. понятия не имею, можно ли его уменьшить. ИМХО, если размер генерируемого кода критичен, лучше использовать pure-c

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добавьте ключи -fno-rtti -fno-exceptions -fno-elide-constructors -Wl,--section-start

в свойствах проекта Nios II Application properties->User flags

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ИМХО, если размер генерируемого кода критичен, лучше использовать pure-c

 

размер кода не зависит от языка. хоть с, хоть с++, хоть асм, хоть свой придуманный. Размер кода зависит от компилятора.

Однажды мне дали проект на чистом си для msp430. иар-си его собрал в 80 кб, я ни чего не меняя собрал проект в иар-с++ - получилось 70 кб

 

 

Добавьте ключи -fno-rtti -fno-exceptions -fno-elide-constructors -Wl,--section-start

 

Спасибо, получилось. код получился как в си. только не съел компилятор все ключи. съел только

-fno-rtti -fno-exceptions -fno-elide-constructors

 

не знаю на что это влияет....... но голый проект для NIOS уменьшился, на текущий момент, с 36 кб до 5,6 кб. А вот готовый проект уменьшился с 72 кб до 71 кб.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это обычный gcc так что назначение ключей можно почитать у него. На счёт кода большого проекта, это уже надо смотреть map файл, на предмет кто тянет какие зависимости.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...