Нда.
Переделал на if-ы.
Стало на 11 байт короче самого оптимизированного варианта со свичём. Плюс в 2 раза меньше стека юзает 5 vs 10 байт. Оптимизаторы, рационализаторы

При этом в каждом if-е перечитывает переменную заново, хотя мог бы в акке держать и XOR-ить от варианта к варианту.
IAR 7.60, оптимизация high/size.
Ну а чего он читая битовую переменную (__bit || __bdata || sfr bit) анализирует её через флаг C, а не сразу в JB bit,label тоже вопрос к гениальным разработчикам.
Сообщение отредактировал GetSmart - Jan 29 2012, 11:48