|
gcc для AVR, слишком большой код |
|
|
|
Oct 5 2010, 06:41
|
Группа: Новичок
Сообщений: 7
Регистрация: 10-08-10
Пользователь №: 58 849

|
Здравствуйте. Я программирую на языке C для микроконтроллеров AVR при помощи компилятора gcc. Нашел такую интересную особенность. В приведенном ниже коде программа занимает место порядка 200 байт. Если раскомментировать закомментированную строку с объявлением функции delay_ms, программа резко полнеет до 350 байт. Никак не могу разобраться, почему. Не могли бы вы мне помочь. Упорное чтение Кернигана и Ричи не помогает. Куда гуглить просто не знаю. Заранее спасибо за ответ. Код #define WDR asm("wdr") //void delay_ms(int time);
void main(void) { delay_ms(1); delay_ms(1); }
void delay_ms(int time) { volatile int Timer, Timer1;
for (Timer=0; Timer<time; Timer++) for (Timer1=0; Timer1<51; Timer1++) WDR; } Заодно сразу показываю опции, которые передаю компилятору. Сам ничего крамольного в них не обнаружил. Код -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
|
|
|
|
|
 |
Ответов
|
Oct 5 2010, 06:59
|
Группа: Новичок
Сообщений: 7
Регистрация: 10-08-10
Пользователь №: 58 849

|
Цитата(777777 @ Oct 5 2010, 10:56)  А какой варнинг он выдает когда строка закомментирована? Build succeeded with 0 Warnings...
|
|
|
|
|
Oct 5 2010, 07:08
|

Профессионал
    
Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357

|
Цитата(609 @ Oct 5 2010, 10:59)  Build succeeded with 0 Warnings... Стало жутко интересно. Сделал проект и получил 230 байт в обоих случаях, только при закомментированном прототипе выдаются варнинги: implicit declaration of function 'delay_ms' conflicting types of function 'delay_ms' С этим, надеюсь, понятно? При неявном использовании функции они считается возвращающей int, а когда компилятор дошел до ее определения, она оказалась void
|
|
|
|
Сообщений в этой теме
609 gcc для AVR Oct 5 2010, 06:41 609 Компилирую при помощи WinAVR-20081205, прикрученно... Oct 5 2010, 07:24 777777 Цитата(609 @ Oct 5 2010, 11:24) Компилиру... Oct 5 2010, 07:30  609 Цитата(777777 @ Oct 5 2010, 11:30) 4.18 b... Oct 5 2010, 08:26   MrYuran Цитата(609 @ Oct 5 2010, 12:26) Вопрос не... Oct 5 2010, 08:35   Сергей Борщ Цитата(609 @ Oct 5 2010, 11:26) Если не и... Oct 5 2010, 10:23   zhevak Цитата(609 @ Oct 5 2010, 14:26) Вопрос не... Oct 5 2010, 10:50   609 Цитата(609 @ Oct 5 2010, 12:26) 4.18 b700... Oct 6 2010, 10:03    MrYuran Цитата(609 @ Oct 6 2010, 14:03) Листинг с... Oct 6 2010, 10:37     609 Цитата(MrYuran @ Oct 6 2010, 14:37) Если ... Oct 6 2010, 11:33 dimka76 Не понятно для чего вы используете volatile для ло... Oct 5 2010, 07:53 MrYuran Цитата(dimka76 @ Oct 5 2010, 11:53) Кодvo... Oct 5 2010, 08:14  dimka76 Цитата(MrYuran @ Oct 5 2010, 12:14) Не зн... Oct 5 2010, 10:39   MrYuran Цитата(dimka76 @ Oct 5 2010, 14:39) А там... Oct 5 2010, 11:10    XVR Цитата(MrYuran @ Oct 5 2010, 15:10) Цитат... Oct 6 2010, 06:57 Dx! А чем макросы _delay_ms() и _delay_us() что идут с... Oct 5 2010, 20:58 MrYuran Вот ключи для более тонкой настройки инлайна и анр... Oct 6 2010, 11:42 609 Цитата(MrYuran @ Oct 6 2010, 15:42) Вот к... Oct 6 2010, 12:39
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|