Как обычно НЕТ ! Но автор там указан. Я FAQ собираю из всего, на мой взгляд, интересного и полезного новичку.ARV писал(а):сам придумал?
Подскажите как красиво перевернуть байт
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
- Реклама
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18561
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
не редкость, когда мысль или идея и самого автора переживает, чего ж удивляться, что тема стала популярной и зажила своей жизнью?Dany писал(а):Какая популярная тема оказалась:) Меня устроил приведенный код, так как переворачивать надо только 1 байт. Поэтому вопросы оптимизации отпадают. Код зато читаем и без магических чисел, просто и красиво.
я считаю, что вот на таких простеньких задачках здорово оттачивается мастерство программиста.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
В CVAVR получилось время выполнения 31 мкС примерно при частоте 1 МГц с оптимизацией по скорости.
Прога без кода переворачивания байта состоит из 96 слов (1 иснтрукция NOP это слово в размере программы) при добавлении кода получается 127 слов - т.е. добавляется 31 слово - примерно 31 инструкция АСМ.
В ICC 7.14 получилось время выполнения 35 мкС примерно при частоте 1 МГц - дема кончилась - оптимизации похоже нет. "Лодер" не использовал.
Прога без кода переворачивания байта состоит из 44 слов (так VMLAB показывает после "ребилд ол") при добавлении кода получается 79 слов - т.е. добавляется 35 слов.
Все исходники и для симуляции в архиве.
Нужно попробовать в IAR и WinAVR.
Прога без кода переворачивания байта состоит из 96 слов (1 иснтрукция NOP это слово в размере программы) при добавлении кода получается 127 слов - т.е. добавляется 31 слово - примерно 31 инструкция АСМ.
В ICC 7.14 получилось время выполнения 35 мкС примерно при частоте 1 МГц - дема кончилась - оптимизации похоже нет. "Лодер" не использовал.
Прога без кода переворачивания байта состоит из 44 слов (так VMLAB показывает после "ребилд ол") при добавлении кода получается 79 слов - т.е. добавляется 35 слов.
Все исходники и для симуляции в архиве.
Нужно попробовать в IAR и WinAVR.
- Вложения
-
- test CVAVR ICC VMLAB.rar
- (101.56 КБ) 358 скачиваний
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18561
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
2 tych:
1. почему такой огромный архив?! че там за исходники такие?! я сейчас такие объемы никак не могу поглядеть
...
2. По логике вещей надо было бы просто по листингу посчитать "читсые" команды, реализующие переворот - и помня, что почти все команды выполняются 1 такт, просто посчитать такты - скорость в тактах не зависит от частоты генератора...
3. в любом случае 31 слово - это много хуже, чем я ожидал... я предполагал 15-16 слов... интересно, а то же самое при оптимизации по объему - какой результат даст?
жаль, никто не желает посоревноваться с компиляторами...
1. почему такой огромный архив?! че там за исходники такие?! я сейчас такие объемы никак не могу поглядеть
2. По логике вещей надо было бы просто по листингу посчитать "читсые" команды, реализующие переворот - и помня, что почти все команды выполняются 1 такт, просто посчитать такты - скорость в тактах не зависит от частоты генератора...
3. в любом случае 31 слово - это много хуже, чем я ожидал... я предполагал 15-16 слов... интересно, а то же самое при оптимизации по объему - какой результат даст?
жаль, никто не желает посоревноваться с компиляторами...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
Вот без картинок с результатом в CVAVR
- Вложения
-
- source_2.rar
- (16.96 КБ) 389 скачиваний
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
- Реклама
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
В том то и дело что ПОЧТИ все.ARV писал(а):почти все команды выполняются 1 такт
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
- Pavel V.
- Мявтор!
- Сообщения: 384
- Зарегистрирован: Ср май 17, 2006 18:39:01
- Откуда: Москва
- Контактная информация:
Вот что сгенерировал IAR с оптимизацией по размеру.
Код: Выделить всё
// 5 tmp = ((in & 0x0F) <<4>> 4);
LDI R30, `in`
LD R17, Z
SWAP R17
ANDI R17, 0xF0
LD R16, Z
SWAP R16
ANDI R16, 0x0F
OR R16, R17
STD Z+2, R16
// 6 tmp = ((tmp & 0x33) <<2>> 2);
MOV R17, R16
ANDI R17, 0x33
LSL R17
LSL R17
ANDI R16, 0xCC
LSR R16
LSR R16
OR R16, R17
STD Z+2, R16
// 7 out = ((tmp & 0x55) <<1>> 1);
MOV R17, R16
ANDI R17, 0x55
LSL R17
ANDI R16, 0xAA
LSR R16
OR R16, R17
STD Z+1, R16- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
Вы взяли покоцаный Си код или это скрипт форума покоцал ?
прицепите текст плиззз.
прицепите текст плиззз.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18561
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
судя по ассемблерному коду - это скрипт покоцал, т.к. видно, что компилировался нормальный код... однако, я был лучшего мнения о компиляторах Си
и это результат оптимизации по размеру кода?!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
По вашим постам на форуме этого не скажешь.ARV писал(а):я был лучшего мнения о компиляторах Си![]()
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18561
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
я, как и все, склонен поддаваться мнению большинства... тут все так рьяно защищают Си, так хвалят протеус и всякие прочие новейшие средства, что я поневоле начинаю сомневаться... и сомневаясь, заочно считаю их (средства эти) лучше и сильнее моих привычных... отсюда и такие слова...
однако, я убеждаюсь лишний раз, что все-таки нет совершенства
я вручную "откомпилировал" этот Сишный код, и без особых стараний получил 15 команд (кстати, они все есть и в приведенном примере - америки я не открыл). я не учитываю пару команд из приведенного примера, которые "подготавливают" данные, т.е. заносят их в регистры. однако за счет отказа от использования ОЗУ и исключения лишних пересылок, мой вариант кода оказался короче примерно на 6 команд. а когда я изменил и алгоритм решения задачи - получил 14 команд. наверное, это не предел, но раз никто не хочет это доказать - и мне неохота 
однако, я убеждаюсь лишний раз, что все-таки нет совершенства
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
Смысла то в этом нет. Используя Си как средство облегчить кодирование алгоритма люди соглашаются платить за это.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
-
bezobraznic
- Родился
- Сообщения: 6
- Зарегистрирован: Сб июл 21, 2007 12:29:16
Re: Подскажите как красиво перевернуть байт
Dany писал(а):Байт= 7.......0, нужно для вывода в порт перевернуть Байт= 0......7.
Не менять же вручную биты?
unsigned char Bit_Reverse( unsigned char x )
{
x = ((x >> 1) & 0x55) | ((x <<1>> 2) & 0x33) | ((x <<2>> 4) & 0x0f) | ((x << 4) & 0xf0);
return x;
}
Re: Подскажите как красиво перевернуть байт
Что то не то у вас в коде вход b_1101_1001bezobraznic писал(а):Dany писал(а):Байт= 7.......0, нужно для вывода в порт перевернуть Байт= 0......7.
Не менять же вручную биты?
unsigned char Bit_Reverse( unsigned char x )
{
x = ((x >> 1) & 0x55) | ((x <<1>> 2) & 0x33) | ((x <<2>> 4) & 0x0f) | ((x << 4) & 0xf0);
return x;
}
выход b_1111_0110
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18561
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
не обращай внимания,Dany, похоже, это была неудачная попытка записать код tych-а в одну строку (об этом я в своем первом посте писал)... имхо, ни красоты, ни какого-либо выигрыша (даже если записать без ошибок)...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!


