Ответ: ничего особенно плохово:
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено -Tумблер- 14 апреля 2004 г. 15:14
В ответ на: Это вряд ли. IAR, например, очень плохо switch обрабатывает. Ни разу не видел, что бы он табличные переходы генерировал. отправлено Bill 14 апреля 2004 г. 14:41

поэтому так тоже можно учиться:

(по-быстрому состряпал, IAR-C для AVR, v1.4C, "самый первый")
byte i;


i=PORTA;
switch (i)
{
case 1:
i +=10;
break;

case 2:
i+=30;
break;

case 3:
i+=40;
break;
}

это привело к:
00000002 0BB3 IN R16,LOW(27)
\ 00000004 0093.... STS LWRD(i),R16
65 i=PORTA;
\ 00000008 0A95 DEC R16
\ 0000000A 29F0 BREQ ?0011
\ 0000000C 0A95 DEC R16
\ 0000000E 39F0 BREQ ?0012
\ 00000010 0A95 DEC R16
\ 00000012 49F0 BREQ ?0013
\ 00000014 0DC0 RJMP ?0010
\ ?0011:
66 switch (i)
67 {
68 case 1:
\ 00000016 0091.... LDS R16,LWRD(i)
\ 0000001A 065F SUBI R16,LOW(246)
\ 0000001C 07C0 RJMP ?0178
69 i +=10;
\ ?0012:
70 break;
71
72 case 2:
\ 0000001E 0091.... LDS R16,LWRD(i)
\ 00000022 025E SUBI R16,LOW(226)
\ 00000024 03C0 RJMP ?0178
73 i+=30;
\ ?0013:
74 break;
75
- azot - Page 24

76 case 3:
\ 00000026 0091.... LDS R16,LWRD(i)
\ 0000002A 085D SUBI R16,LOW(216)
\ ?0178:
\ 0000002C 0093.... STS LWRD(i),R16
77 i+=40;
\ ?0010:
78 break;
79 }


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru