|
100 байт не хватает |
|
|
|
Dec 25 2008, 20:25
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
В общем, называется "приплыли", допрограммировались - бутлодырь перестал вмещаться в размер бутсекции, т.е. в 2k. Последним делом добавлено нечто такое: Код void Bus_transmit_packet(uint8 aStatus) { uint16 vCrc;
Bus_transmit_byte(Slp_packet_end); Bus_transmit_byte(Slp_packet_end); Bus_transmit_byte(Slp_sysdev_program | Slp_response_mask); // vCrc = vxl_get_crc16(Vxl_crc_ccitt_initial_value, Slp_sysdev_program | Slp_response_mask); Bus_staff_n_transmit_byte(aStatus); vCrc = vxl_get_crc16(0x7976, aStatus); Bus_staff_n_transmit_byte(vCrc >> 8); Bus_staff_n_transmit_byte(vCrc & 0xFF); Bus_transmit_byte(Slp_packet_end); } Что занимает примерно 60 байт. Предварительное заполнение массива и передача массива хоть и напрашивалась явно, но почти ничего не изменила или даже хуже. Однако, где бы наскрести еще сотню байт ? (таблица векторов еще не затронута, как и секции инициализации/финализации) Поделитесь, pls, примером оптимизации - сам я боюсь все порушить и грохнуть что-либо нужное. M88, GCC(WinAVR-20060421), cкрипты линкера от WinAVR-20081205
Сообщение отредактировал Огурцов - Dec 25 2008, 20:26
|
|
|
|
|
 |
Ответов
|
Dec 26 2008, 15:07
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(zltigo @ Dec 26 2008, 10:58)  Да не тот случай  Совершенно согласен, тут проза жизни, а там какая-то сказка, и если отбросить кудрявые фантазии афтара, от сказки останется абсолютный ноль. Цитата(zltigo @ Dec 26 2008, 10:58)  Тут наверняка просто нечто писанное левой ногой и на 2K нахождение 100 байт не требует сверхестественных потуг. Ну зачем так голословно, левой ногой (на ваш взгляд) там писано от силы байт триста, остальное уже заоптимизировано реальным профи. Но это не означает, что сотню байт выжать невозможно, иначе я бы и вопроса поднимать не стал. Цитата(ReAl @ Dec 26 2008, 14:02)  Ну это явные кандидаты на -mshort-calls, чтобы сразу компилятор не ставил, а --relax линкеру полировку наведёт. --relax не помогает, -mshort-calls выжимает 110 байт, но только для m168, для m88 без изменений. Цитата(Diz @ Dec 26 2008, 13:09)  Посмотрите, есть ли у в строке для компилятора ключики -ffunction-sections и -fdata-sections, а для линкера --gc-sections. Есть. На всякий случай Код ## Compile options common for all C compilation units. CFLAGS = $(COMMON) CFLAGS += -Wall -gdwarf-2 -std=gnu99 -DA40520101 -ffunction-sections -fdata-sections -mshort-calls -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d
## Assembly specific flags ASMFLAGS = $(COMMON) ASMFLAGS += $(CFLAGS) ASMFLAGS += -x assembler-with-cpp -Wa,-gdwarf2
## Linker flags LDFLAGS = $(COMMON) LDFLAGS += -Wl,--verbose -Wl,--gc-sections -Wl,--relax -Wl,-Map=bootloader.map LDFLAGS += -Wl,-section-start=.text=0x1800
|
|
|
|
|
Dec 26 2008, 16:06
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Огурцов @ Dec 26 2008, 18:07)  Ну зачем так голословно... Ну не менее голословно, тем более с учетом некторых ранее изложенных на форуме взглядов на программирование, чем Ваше утверждение Цитата ...уже заоптимизировано реальным профи. Решить это просто - выложить сюда на обозрение. Полагаю, что найдется несколько желающих,ну скажим так, посоревноваться с "реальным профи" не только в абстрактных рассуждениях о постфактум указаниях компилятору в духе "ну сделай, хоть что-нибудь еще".
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Dec 26 2008, 16:59
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(zltigo @ Dec 26 2008, 19:06)  Решить это просто - выложить сюда на обозрение. Полагаю, что найдется несколько желающих,ну скажим так, посоревноваться с "реальным профи" не только в абстрактных рассуждениях о постфактум указаниях компилятору в духе "ну сделай, хоть что-нибудь еще". +1 Да, автор, выкладывайте, в конце концов, бутлодырь не очень комерческая вещь.. А мы посмотрим - пооптимизируем... только если решитесь выкладывать, то нужны точные указания по сборке, ну там версия компилятора, тип проца, командная строка итд... то есть если не будет проблем со сборкой, готов посмотреть/пооптимизировать..
|
|
|
|
|
Dec 26 2008, 17:40
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Вообще, меня не уполномачивали публиковать исходники, так что для текущей версии (+98 байт) это исключено. Но если гарантированно найдутся желающие с этой версией посоревноваться, что делать, я наверно напрягусь и соберу изначальный вариант (кажется байт 500-700 плюсом). В этом случае вопросов с авторскими правами не возникнет. Цитата(zltigo @ Dec 26 2008, 16:06)  Ну не менее голословно, [skipped] чем Ваше утверждение Цитата уже заоптимизировано реальным профи. Смиялсо. Значит вы готовы ? Цитата(zltigo @ Dec 26 2008, 16:06)  постфактум указаниях компилятору в духе "ну сделай, хоть что-нибудь еще". В общем, да. Но высказанные идеи, в определенном смысле, были полезны.
|
|
|
|
|
Dec 26 2008, 19:00
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(Огурцов @ Dec 26 2008, 20:40)  Вообще, меня не уполномачивали публиковать исходники, так что для текущей версии (+98 байт) это исключено. Но если гарантированно найдутся желающие с этой версией посоревноваться, что делать, я наверно напрягусь и соберу изначальный вариант (кажется байт 500-700 плюсом). В этом случае вопросов с авторскими правами не возникнет. Ну публикуйте уже.... А там посмотрим... думаю что без попыток оптимизации другими будет даже проще... развлечемся под новый год...
|
|
|
|
|
Dec 26 2008, 19:29
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Огурцов @ Dec 26 2008, 22:12)  Как принято нынче говорить "слив защитан", кстати, если "это" названо исходниками вызвыающими уважение, то, то я их частично лет пять назад портировал на ARM - обычное интернетовско-студенческое творчество. В собственно загрузчике ошибки в обработке ошибок видны невооруженным глазом, стиль жутковатый, собственно сам AES написан в лоб. Немного (не ставил целью особо зажиматься - быстренько правил бросающееся в глаза) подправил AES дешифратор. Могу его выложить. Остальные правка/чистка под AVR возможно где-то тоже сохранилась в backup.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Dec 26 2008, 19:57
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Дада, сделайте из этого 1.5-1.7 килобайта, чтобы осталось байт триста для моих фич, и защитаем. Пока я вижу от вас только пустой треп, про разные ARM, в т.ч. Вообще, я вас за язык не тянул, да и код мне ваш не нужен, но хотите меряться - меряйтесь, цифры для сравнения у меня есть. Но в этой ветке, если вы не поняли, меня интересуют способы уменьшения размера кода (за что спасибо почти всем участникам обсуждения), а не работа по его уменьшению и не какие-то там мерялки.
|
|
|
|
|
Dec 26 2008, 21:45
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Огурцов @ Dec 26 2008, 22:57)  Дада, сделайте из этого 1.5-1.7 килобайта, чтобы осталось байт триста для моих фич, и защитаем. Пока я вижу от вас только пустой треп, про разные ARM, в т.ч. Треп это, простите, по вашей части. И не только в этой теме  Цитата Вообще, я вас за язык не тянул... Разумеется нет, но мимо безответственного трепа я обычно стараюсь не проходить. Теперь к делу, извините, пришлось отвлечься - встречал жену из Праги. Весь этот бред писанный китайским студентом вычитывать не стал, а только AES.c поправил. Именно поправил явное, радикальной переделкой заниматься не стал, ибо только на этом сэкономил 172 байта, что поболе желаемых 100 будет. Бинарник 1732, что тоже уже меньше озвученных Вами 1,7 K Все это при том, что я чувствую AVR хуже, чем ARM и вообще почти год для AVR вообще ничего не писал, посему ориентировался на просто 'C'. Было: Код 1 046 bytes in segment CODE 6 bytes in segment INITTAB 36 bytes in segment NEAR_F 522 bytes in segment NEAR_Z
1 082 bytes of CODE memory (+ 6 bytes shared) 522 bytes of DATA memory Стало: Код 874 bytes in segment CODE 6 bytes in segment INITTAB 36 bytes in segment NEAR_F 522 bytes in segment NEAR_Z 910 bytes of CODE memory (+ 6 bytes shared) 522 bytes of DATA memory Листинги обеих AES.c и моего AES.zlt.c вариантов и бинарник в приложении. Вот так. P.S. Извиниться не хотите? Смешливый Вы наш....
Прикрепленные файлы
aes.rar ( 7 килобайт )
Кол-во скачиваний: 67
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Dec 27 2008, 06:21
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(zltigo @ Dec 26 2008, 21:45)  Треп это, простите, по вашей части. И не только в этой теме  Ога. Посмотрите лучше на первую страницу - выссказалось несколько человек и каждый дал по одному и даже нескольким вариантам. Всю вторую страницу заняли вы вашим флудом. И чей же треп ? Цитата(zltigo @ Dec 26 2008, 21:45)  Именно поправил явное, радикальной переделкой заниматься не стал, ибо только на этом сэкономил 172 байта, что поболе желаемых 100 будет. Бинарник 1732, что тоже уже меньше озвученных Вами 1,7 K Я правильно понял первую строку листинга: IAR Atmel AVR C/C++ Compile - это IAR ? Так вот IAR, если вы хоть чуть-чуть читали, ничуть не устраивает, и, кроме того, он вполне справляется и без ваших потуг. На GCC, если я еще не забыл, это же самое примерно 2.7k. Деразайте. Цитата(zltigo @ Dec 26 2008, 21:45)  Извиниться не хотите? Смешливый Вы наш.... Будет решение - извинюсь. Пока от вас только флудотреп.
|
|
|
|
|
Dec 27 2008, 10:37
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Огурцов @ Dec 27 2008, 09:21)  он вполне справляется и без ваших потуг. На GCC, если я еще не забыл, это же самое примерно 2.7k. Как всегда врете и глупо изворачиваетесь. GCC, коему по Вашему утверждению, не хватало 100 байтов для Ваших фич теперь вдруг и без Ваших фич стало не хватать более 700.... Кто-то хотел сэкономить 100 байтов? Результат я дал. При этом, GCC столь-же благосклонно, как и IAR отнесется к очевидным изменениям - поминаемые 100 байт Вы получите и от GCC. Кроме того, поскольку , как я и предполагал, действительно все в этом образчике от Atmel писано левой ногой.Это вызвало с Вашей стороны только Цитата .....уже заоптимизировано реальным профи Смиялсо. То, потратив еще минут 15-20 можно сбросить еще 5-10% и это только в aes.c и это будет не предел, а просто результат потраченых нескольких десятков минут. В Вашей, как я теперь, совершенно определенно могу утверждать, писанине нужно править и соответственно экономить можно много больше. P.S. Цитата(SasaVitebsk @ Dec 27 2008, 02:20)  Спасибо. Поизучаем. Сейчас прошелся еще разок, бегло, в рамках просто 'C' без IAR/AVR наворотов но теперь Код 790 bytes in segment CODE 12 bytes in segment INITTAB 32 bytes in segment NEAR_F 10 bytes in segment NEAR_I 10 bytes in segment NEAR_ID 512 bytes in segment NEAR_Z 832 bytes of CODE memory (+ 12 bytes shared) 522 bytes of DATA memory На 250 байт похудел почти килобайтовый aes дешифратор.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
Сообщений в этой теме
Огурцов 100 байт не хватает Dec 25 2008, 20:25 Огурцов Помню.
Фишка еще в том, что простое увеличение пам... Dec 25 2008, 20:34  ReAl Цитата(Огурцов @ Dec 25 2008, 22:34) Фишк... Dec 25 2008, 22:12   Огурцов Цитата(ReAl @ Dec 25 2008, 22:12) А почем... Dec 26 2008, 06:39      zltigo Цитата(Огурцов @ Dec 26 2008, 20:40) Смия... Dec 26 2008, 17:54       Огурцов Цитата(zltigo @ Dec 26 2008, 17:54) И опя... Dec 26 2008, 18:11        zltigo Цитата(Огурцов @ Dec 26 2008, 21:11) Поче... Dec 26 2008, 18:22         Огурцов Цитата(zltigo @ Dec 26 2008, 18:22) Либо ... Dec 26 2008, 18:28          zltigo Цитата(Огурцов @ Dec 26 2008, 21:28) То ч... Dec 26 2008, 18:45          aesok Цитата(Огурцов @ Dec 26 2008, 21:28) Могу... Dec 26 2008, 18:45             Petka Цитата(zltigo @ Dec 27 2008, 13:37) Сейча... Dec 27 2008, 12:33              zltigo Цитата(Petka @ Dec 27 2008, 15:33) Оффтоп... Dec 27 2008, 13:17              Огурцов Цитата(Petka @ Dec 27 2008, 12:33) Которы... Dec 27 2008, 20:23               zltigo Цитата(Огурцов @ Dec 27 2008, 23:23) разд... Dec 27 2008, 22:49 SasaVitebsk Недавно в IAR выдушил 400 байт. Возможно мои реком... Dec 25 2008, 22:17 ReAl Тьху, у меги88 и 168 одинаковые размеры бут-секции... Dec 25 2008, 22:30 Огурцов Цитата(ReAl @ Dec 25 2008, 22:30) 2а) В G... Dec 26 2008, 07:02  aesok Цитата(Огурцов @ Dec 26 2008, 10:02) Как ... Dec 26 2008, 07:13   Огурцов Цитата(aesok @ Dec 26 2008, 07:13) Для эт... Dec 31 2008, 07:40    ReAl Цитата(Огурцов @ Dec 31 2008, 09:40) Пыта... Dec 31 2008, 08:27    _Pasha Цитата(Огурцов @ Dec 31 2008, 11:40) Если... Dec 31 2008, 11:11     Огурцов Цепляет, он там косвенно, через полдюжины #include... Dec 31 2008, 16:55 aesok Bus_transmit_byte и Bus_staff_n_transmit_byte это ... Dec 26 2008, 07:02 Огурцов Цитата(aesok @ Dec 26 2008, 07:02) avr-gc... Dec 26 2008, 07:17  Огурцов Добавил фичи, теперь не хватает 98 байт. Почти уга... Dec 26 2008, 10:06 _Pasha Цитата(rezident @ Dec 26 2008, 00:28) Ист... Dec 26 2008, 10:39 ReAl Цитата(_Pasha @ Dec 26 2008, 12:39) Опция... Dec 26 2008, 14:02 Diz Посмотрите, есть ли у в строке для компилятора клю... Dec 26 2008, 13:09 SasaVitebsk Спасибо. Поизучаем. Dec 26 2008, 23:20 zltigo Цитата(SasaVitebsk @ Dec 27 2008, 02:20) ... Dec 27 2008, 00:23 GetSmart Огурцов, из чистого любопытства спрашиваю, почему ... Dec 27 2008, 06:33 Огурцов Цитата(GetSmart @ Dec 27 2008, 06:33) Огу... Dec 27 2008, 06:46 SasaVitebsk Вот все мы не без изъяна. У каждого из нас есть св... Dec 27 2008, 21:43 zltigo Цитата(SasaVitebsk @ Dec 28 2008, 00:43) ... Dec 27 2008, 23:01  Огурцов Цитата(zltigo @ Dec 27 2008, 23:01) А, та... Dec 28 2008, 09:13   zltigo Цитата(Огурцов @ Dec 28 2008, 12:13) Я та... Dec 28 2008, 10:57    Petka Цитата(zltigo @ Dec 28 2008, 13:57) Ну си... Dec 28 2008, 11:04     zltigo Цитата(Petka @ Dec 28 2008, 14:04) в неоп... Dec 28 2008, 11:09      Petka Цитата(zltigo @ Dec 28 2008, 14:09) Тогда... Dec 28 2008, 11:16       zltigo Цитата(Petka @ Dec 28 2008, 14:16) хотя-б... Dec 28 2008, 11:20    Огурцов Цитата(zltigo @ Dec 28 2008, 10:57) Судя ... Dec 28 2008, 12:29     zltigo Цитата(Огурцов @ Dec 28 2008, 15:29) почи... Dec 28 2008, 14:15      Petka Цитата(zltigo @ Dec 28 2008, 17:15) Сколь... Dec 28 2008, 15:59       zltigo Цитата(Petka @ Dec 28 2008, 18:59) XTEA 9... Dec 28 2008, 16:05        Petka RE: 100 байт не хватает Dec 28 2008, 16:35         zltigo Цитата(Petka @ Dec 28 2008, 19:35) за что... Dec 28 2008, 16:39          Petka Цитата(zltigo @ Dec 28 2008, 19:39) 31 ве... Dec 28 2008, 17:19           zltigo Цитата(Petka @ Dec 28 2008, 20:19) IARом ... Dec 29 2008, 11:06            Petka Цитата(zltigo @ Dec 29 2008, 14:06) Что-т... Dec 29 2008, 13:39            singlskv Цитата(zltigo @ Dec 29 2008, 14:06) А вот... Dec 29 2008, 17:45      Огурцов Цитата(zltigo @ Dec 28 2008, 14:15) Уже о... Dec 28 2008, 16:01 defunct Огурцов:
A. Нет смысла переходить на инструмент, ... Dec 27 2008, 21:48 Огурцов Цитата(defunct @ Dec 27 2008, 21:48) asm ... Dec 27 2008, 22:04  defunct Цитата(Огурцов @ Dec 28 2008, 00:04) Если... Dec 27 2008, 22:14   Огурцов Цитата(defunct @ Dec 27 2008, 22:14) Что ... Dec 27 2008, 22:32    defunct Цитата(Огурцов @ Dec 28 2008, 00:32) Како... Dec 27 2008, 22:41     Огурцов Цитата(defunct @ Dec 27 2008, 22:41) DES ... Dec 27 2008, 22:56      defunct Цитата(Огурцов @ Dec 28 2008, 00:56) #def... Dec 27 2008, 22:57 Petka Ещё как идея: Попробуйте вместо буржуевского AES и... Dec 28 2008, 08:19 zltigo Цитата(Petka @ Dec 28 2008, 11:19) Наскол... Dec 28 2008, 08:53  Petka Цитата(zltigo @ Dec 28 2008, 11:53) Он от... Dec 28 2008, 09:34   zltigo Цитата(Petka @ Dec 28 2008, 12:34) Из 32б... Dec 28 2008, 10:10    Petka Цитата(zltigo @ Dec 28 2008, 13:10) ... П... Dec 28 2008, 10:19 _Pasha C vs ASM (AVR):
Вчера переписал на одном девайсе п... Dec 30 2008, 09:48 singlskv Цитата(_Pasha @ Dec 30 2008, 12:48) C vs ... Dec 30 2008, 10:25 Rst7 Цитатав С оверхед жуткий из-за приведения всего к ... Dec 30 2008, 11:13 singlskv Цитата(Rst7 @ Dec 30 2008, 14:13) Где?IAR... Dec 30 2008, 12:19  aesok Цитата(singlskv @ Dec 30 2008, 15:19) gcc... Dec 30 2008, 13:26   singlskv Цитата(aesok @ Dec 30 2008, 16:26) Дело н... Dec 30 2008, 13:49    aesok Цитата(singlskv @ Dec 30 2008, 16:49) про... Dec 30 2008, 14:35     singlskv Цитата(aesok @ Dec 30 2008, 17:35) Так ка... Dec 30 2008, 15:06 _Pasha Цитата(Rst7 @ Dec 30 2008, 15:13) Где?
Вы... Dec 30 2008, 12:24 Rst7 ЦитатаIAR в таких случаях действительно оптимизиру... Dec 30 2008, 13:17
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|