Цитата(prottoss @ Aug 1 2006, 11:53)

Цитата(DeXteR @ Jul 31 2006, 22:25)

Ура
Это все, конечно, здорово. Но, если функций не так уж и много, то лучше сделать цикл switch...case. Вы ведь хотите добиться бОльшей скорости? Вы видели в ассемблере, КАК происходит прыжок по указателю на функцию?.. Кроме того, когда количество функций в цикле switch...case много (сколько не знаю), компилятор IAR сам формирует таблицу с адресами функций. Вот так то.
Код
12: Ps[0]();
+0000002E: E5E4 LDI R30,0x54 Load immediate
+0000002F: E0F0 LDI R31,0x00 Load immediate
@00000030: _..X_RSTACK_BASE
+00000030: 9105 LPM R16,Z+ Load program memory and postincrement
+00000031: 9114 LPM R17,Z Load program memory
+00000032: 01F8 MOVW R30,R16 Copy register pair
+00000033: 9509 ICALL Indirect call to (Z)
Вроде не так уж и медленно
На ассемблере быстрее небудет
case конечно быстрее работает но в этом месте программы особого быстродействия мне ненадо
Она достаточно редко вызывается (гдето раз в 0.1 с)
Зато запись удобней и приятней
Если несложно - приведите листинг case - хотелось бы поразглядовать для сравнения =)