реклама на сайте
подробности

 
 
> Как можно уменьшить скомпилированный исходник?
The Fresh
сообщение Apr 15 2007, 07:29
Сообщение #1


Частый гость
**

Группа: Новичок
Сообщений: 146
Регистрация: 3-12-06
Пользователь №: 23 071



Есть исходник, после компиляции забивает память практически полностью 2K AT90S2313. Необходимо дописать к нему приблизительно 1/5 его кода. Я вижу 2 варианта, либо переносить некоторые функции на чистый ASM, либо использовать какой-нибудь продвинутый компилятор. Сейчас использую WinAVR 20050214, использовал 20070122, но код получался больше. Изменял настройки
make файла, но сколь ощутимого результата не увидел!

# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization.
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
OPT = 2
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Amper25
сообщение Apr 15 2007, 12:17
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 215
Регистрация: 10-04-07
Пользователь №: 26 929



Не знаю как в вашем компиллере, но когда-то давно я пользовал SDCC-Compiller
для 8051. У него есть также и версия для AVR.

Так там при написании функций есть опция __naked.
Она отключает все PUSH и POP-ы во время старта и окончания.
И уже от того, какие переменные затрагиваются внутри ф-ий, можно самому выбирать что сохранить,
а что нет.

А вообще для таких слабеньких девайсов как 2313 лучше писать на asm-е. IMHO.
Go to the top of the page
 
+Quote Post
Snaky
сообщение Apr 16 2007, 06:25
Сообщение #3


Mute Beholder
***

Группа: Свой
Сообщений: 260
Регистрация: 4-04-07
Из: Третья планета от Солнца
Пользователь №: 26 754



Цитата(Amper25 @ Apr 15 2007, 16:17) *
Не знаю как в вашем компиллере, но когда-то давно я пользовал SDCC-Compiller для 8051. У него есть также и версия для AVR.
Так там при написании функций есть опция __naked. Она отключает все PUSH и POP-ы во время старта и окончания. И уже от того, какие переменные затрагиваются внутри ф-ий, можно самому выбирать что сохранить, а что нет.

В WinAVR тоже можно объявлять naked функции:
void my_function(void) __attribute__ ((naked));


--------------------
Common sense is not so common.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- The Fresh   Как можно уменьшить скомпилированный исходник?   Apr 15 2007, 07:29
- - defunct   -Os - оптимизирует сильнее всего. Можно попробоват...   Apr 15 2007, 08:07
- - beer_warrior   ЦитатаСейчас использую WinAVR 20050214, использова...   Apr 15 2007, 09:17
- - aesok   Цитата(The Fresh @ Apr 15 2007, 07:29) Ес...   Apr 15 2007, 10:09
- - aesok   Еще Вам может помочь уменьшить размер кода ключ ко...   Apr 15 2007, 11:56
- - The Fresh   Вот make file(прикрепил) и ключи, с плавающей запя...   Apr 15 2007, 12:23
|- - aesok   Я не увидел никакоко криминала в макефайле. Поэксп...   Apr 15 2007, 12:49
- - The Fresh   Мой взор все больше ориентируется на МК с большим ...   Apr 15 2007, 12:53
|- - aesok   Цитата(The Fresh @ Apr 15 2007, 12:53) Мо...   Apr 15 2007, 13:17
- - The Fresh   Немного отвоевал, есть константы объемные наверное...   Apr 15 2007, 13:38
- - prm   К сведению, был у меня проект на IAR для AT90S2313...   Apr 16 2007, 10:13
- - Snaky   Цитата(prm @ Apr 16 2007, 14:13) Затем пе...   Apr 16 2007, 11:37
- - haker_fox   Цитата(Snaky @ Apr 16 2007, 17:37) Хммм, ...   Apr 18 2007, 07:01
- - prm   Написал на CodeVision около 6 проектов, НИКАКИХ ГЛ...   Apr 18 2007, 09:48


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 15:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01376 секунд с 7
ELECTRONIX ©2004-2016