|
Эффективность кода WinAVR |
|
|
|
 |
Ответов
|
Apr 21 2008, 17:11
|
Местный
  
Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527

|
GCC 3.4.6 Код #define F0 5 const int F0BIT = (1<<F0); uint16_t v;
int main(void) { if(v & F0BIT) PORTD = 0; else PORTD = 0xFF;
while(1){}; } Код ---- main.c --------------------------------------------------------------------------------------- 23: if(v & F0BIT) PORTD = 0; else PORTD = 0xFF; +00000032: 91800062 LDS R24,0x0062 Load direct from data space +00000034: 91900063 LDS R25,0x0063 Load direct from data space +00000036: FF85 SBRS R24,5 Skip if bit in register set +00000037: C002 RJMP PC+0x0003 Relative jump +00000038: BA12 OUT 0x12,R1 Out to I/O location +00000039: C002 RJMP PC+0x0003 Relative jump +0000003A: EF8F SER R24 Set Register +0000003B: BB82 OUT 0x12,R24 Out to I/O location 33: while(1){}; +0000003C: CFFF RJMP PC-0x0000 Relative jump Никто ничего не вычисляет
|
|
|
|
|
Apr 22 2008, 04:31
|

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

|
Цитата(Qwertty @ Apr 21 2008, 21:11)  GCC 3.4.6 У меня была 3.4.5 Цитата(777777 @ Apr 21 2008, 20:44)  ... Впрочем, я уже скачал новую версию, 20080411 (4.3.0), там это место генерируется весьма эффективно, через SBRS, но там в другом месте глюк - часть кода не транслируется вообще, завтра буду разбираться. После уменьшения кода до минимально необходимого для повторения глюка, удалось понять его причину. Дело в том, что gcc - компилятор "настоящий" (в отличие от Keil, напимер), поэтому volatile нужно писать всегда, где это надо
|
|
|
|
|
Apr 22 2008, 07:05
|
Местный
  
Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527

|
Цитата(777777 @ Apr 22 2008, 08:31)  У меня была 3.4.5 Попробовал в 4.2.2 - тоже нормально, почти оптимальный результат. Цитата(777777 @ Apr 22 2008, 08:31)  После уменьшения кода до минимально необходимого для повторения глюка, удалось понять его причину. Дело в том, что gcc - компилятор "настоящий" (в отличие от Keil, напимер), поэтому volatile нужно писать всегда, где это надо  Никогда не видел, что бы отсутствие волатила препятствовало компиляции. Обычно это совсем не мешает, просто программа работает не совсем так, как надо. Или совсем не так  Можно примерчик кода не собирающегося без волатила?
|
|
|
|
Сообщений в этой теме
777777 Эффективность кода WinAVR Apr 21 2008, 07:06 Kuzmi4 2 777777 - какие ключи использовали ??
..
там в пр... Apr 21 2008, 07:07 777777 Цитата(Kuzmi4 @ Apr 21 2008, 11:07) 2 777... Apr 21 2008, 07:12  Палыч -O0 - Do not optimize
Ключи описаны в файле gcc.p... Apr 21 2008, 07:18   Obama Цитата(Палыч @ Apr 21 2008, 11:18) -O0 - ... Apr 21 2008, 09:48 777777 Цитата(Kuzmi4 @ Apr 21 2008, 11:07) там в... Apr 21 2008, 07:21  MrYuran Цитата(777777 @ Apr 21 2008, 11:21) Класс... Apr 21 2008, 07:28   Палыч Цитата(MrYuran @ Apr 21 2008, 10:28) надо... Apr 21 2008, 08:06   777777 Цитата(MrYuran @ Apr 21 2008, 11:28) надо... Apr 21 2008, 08:54    Палыч Цитата(777777 @ Apr 21 2008, 11:54) Э, эт... Apr 21 2008, 09:03     mse Цитата(Палыч @ Apr 21 2008, 13:03) И, зач... Apr 21 2008, 09:24 Палыч gcc.gnu.org/onlinedocs/gcc-4.0.2/gcc.pdf
P.S. Све... Apr 21 2008, 09:59 mdmitry После инсталляции:
C:\WinAVR-20071221\do... Apr 21 2008, 14:21 777777 Я в шоке. Какой код можно сгенерировать на такую с... Apr 21 2008, 14:43  aaarrr Цитата(777777 @ Apr 21 2008, 18:43) А все... Apr 21 2008, 15:06   777777 Цитата(aaarrr @ Apr 21 2008, 19:06) А зач... Apr 21 2008, 15:42    singlskv Цитата(777777 @ Apr 21 2008, 19:42) Тот ж... Apr 21 2008, 15:46    Палыч Цитата(777777 @ Apr 21 2008, 18:42) Тот ж... Apr 21 2008, 15:48     777777 Цитата(Палыч @ Apr 21 2008, 19:48) Что, т... Apr 21 2008, 16:44   777777 Цитата(Qwertty @ Apr 22 2008, 11:05) Нико... Apr 22 2008, 07:30    IgorKossak Цитата(777777 @ Apr 22 2008, 10:30) Правд... Apr 22 2008, 07:39 Aesthete Animus Вопрос конечно совсем не в тему... Но не скажите к... Apr 21 2008, 17:36 Qwertty Цитата(Aesthete Animus @ Apr 21 2008, 21... Apr 21 2008, 17:50  Aesthete Animus Цитата(Qwertty @ Apr 21 2008, 21:50) Я за... Apr 21 2008, 18:24 west329_ извеняюсь за оффтоп, что ето значит volatile, встр... Apr 22 2008, 07:17
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|