|
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 27 2008, 21:43
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Вот все мы не без изъяна. У каждого из нас есть свои ограничения. Иногда, возможно даже чеще чем надо, не хватает силы воли для получения новых знаний (я о себе к примеру). А иногда, входишь в "транс" и за неделю проделываешь работу, которую откладывал больше года.  Давайте вспомним, что до Нового Года остался совсем пустяк и простим друг другу свои мелкие недостатки. Я, к сожалению, совсем что-то не чувствую приближения праздника в этом году. Может виноват в этом Step 7. Скорей бы его в топку и назад к компилятору С.
|
|
|
|
|
Dec 27 2008, 23:01
|

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

|
Цитата(SasaVitebsk @ Dec 28 2008, 00:43)  Давайте вспомним, что до Нового Года остался совсем пустяк и простим друг другу свои мелкие недостатки. Согласен  . Цитата(Огурцов @ Dec 28 2008, 01:56)  Это уже весь бред ? Или еще будет ? А, так Вы это бредили  ! То-то я смотрю что-то про красное в крапинку начали нести... Хорошо, что предупредили, не сразу понял  .
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Dec 28 2008, 09:13
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(zltigo @ Dec 27 2008, 23:01)  А, так Вы это бредили  ! То-то я смотрю что-то про красное в крапинку начали нести... Хорошо, что предупредили, не сразу понял  . Я так понимаю, судя по продолжающемуся хамству, оригинальный код вы уже разместили в ~1.7k на GCC или ~1.1 на IAR, да ? Так и где же он ? Цитата(Petka @ Dec 28 2008, 08:19)  Попробуйте вместо буржуевского AES использовать отечественный стандарт шифрования ГОСТ. С тем же успехом можно было использовать любой другой. Но у задачи есть еще одно существенное ограничение - минимально количество телодвижений. Исходный вариант в этом смысле был очень неплох. Да в общем-то и сейчас альтернатив не вижу. Цитата(defunct @ Dec 27 2008, 22:57)  У AVRки всего 10K перезаписей. Поэтому 56-бит неломаемо. С параметрами #if KEY_COUNT == 1 #define KEYBITS 128 //!< Use AES128. #define ROUNDS 10 //!< Number of rounds. #define KEYLENGTH 16 //!< Key length in number of bytes. у меня что-то не сложилось. Да и в общем-то весь выигрышь лишь в длинне ключа - 16 байт и, кажется, размере ОЗУ, которого и так вполне хватает. Алгоритм, заточенный под конкретно 56 бит, я еще и не искал. С ним, вероятно, могло бы быть гораздо лучше.
|
|
|
|
|
Dec 28 2008, 10:57
|

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

|
Цитата(Огурцов @ Dec 28 2008, 12:13)  Я так понимаю, судя по продолжающемуся хамству.... Судя по повышению требований со 100 байт прописанных в заголовке до 900 ничего другого, кроме огульного обвиненя, теперь уже в хамстве у Вас не осталось. Напомню историю вопроса 1. Пролетели на 100 байт. С кем не бывает. 2. Вы начали пустопорожние общие разговоры об оптимизации 3. Я совершенно справедливо предположив, что ничего умнее, чем взять каой-нибудь писанный левой ногой исходник из интернета не сделано, выразился в духе, что зажать его на 100 байт без проблем. 4. С Вашей стороны начались рассказы о крутых профессионалах, от одного только имени (что-то вроде истинного имени Будды) которых лично я должен если не рассыпаться в прах, то как мимимум, покрыться красными полосками и удалиться в монастырь на покаяние. 5. Вами был выложен, как и предполагалось, писанный левой ногой исходник из интернету. 6. Естественно, он (точнее даже один из его кусков - других не касался) был соверженно спокойно сокращен на 250 байт... Что даже с учетом какого-нибудь другого генерящего менее компактный код компилятора просимые первоначально 100 байт обеспечивает наверняка. 7. Тут Вы начали совсем уж глупые разговоры о том, что это был "не тот" исходник а "тот" исходник он такооой исходник, что просто всем исходникам исходник и что-бы только приблизится к "тому" шедевру нужно зажать "этот" исходник вдвое. 8. Потом, вообще, зачем-то рассказали нам всем, как Вам нравится работать кассиром.... Короче,если-бы Вы дейсвительно, как Вам говорили несколько человек, выложили свой не влезающий на тот момент в 2K исходник, то возможно и был-бы повод для обсуждения. А так, так  . Хотя нет, небольшая польза есть, если у кого были иллюзии, что в Интернете, пусть даже у "профессионалов" именитой фирмы, можно найти реально приличные исходники  , то, надеюсь, они хоть слегка развеялись. Цитата(Petka @ Dec 28 2008, 13:19)  Очень спорно. ИМХО ГОСТ компактнее получится. Если приведёте свою оптимальную реализацию (на Си, и лучше оптимизированную для winavr) DES . Ну сишные DES более, чем доступны, а "своими" и уж тем боле под AVR не занимался, ГОСТ реализация как-то на глаза не попадалась, но явно должна где-нибудь лежать. Для начала можете сравнить их и не в оптимизированном виде. По идее, когда-то давно использовал некий более простой, нежели DES (но его уровня) алгоритм - могу,когда вернусь домой, поискать в своих архивах.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Dec 28 2008, 12:29
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(zltigo @ Dec 28 2008, 10:57)  Судя по повышению требований со 100 байт прописанных в заголовке до 900 ничего другого, кроме огульного обвиненя, теперь уже в хамстве у Вас не осталось. Нет, еще есть вариант - в глупости. 100 нехватало мне. А 900 нехватает вам, чтобы иметь право хотя бы встать в один ряд с тем профи. Насколько потребовалось бы ужать еще, чтобы сметь писать оскорбления в его адрес, я даже не говорю. Но вы ж этого все равно не понимаете. Так что одно из двух. Или и то и другое вместе. Цитата(zltigo @ Dec 28 2008, 10:57)  2. Вы начали пустопорожние общие разговоры Знаете, я вас персонально в этот топик не приглашал. Более того, еще раз настоятельно требую покинуть его и почистить за собой все ваши посты, потому как они целиком и полностью являются офф-топиком, постоянно провоцируют и оскорбляют других участников форума. Цитата(zltigo @ Dec 28 2008, 10:57)  8. Потом, вообще, зачем-то рассказали нам всем, как Вам нравится работать кассиром.... Резонно. Затем же, зачем и вы рассказали про свою жену, которая прилетела из риги.
|
|
|
|
|
Dec 28 2008, 14:15
|

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

|
Цитата(Огурцов @ Dec 28 2008, 15:29)  почистить за собой все ваши посты... Уже один раз ответил. Цитата(Огурцов @ Dec 28 2008, 15:29)  в его адрес... Раговор веду исключительно о Вас и оцениваю исключительно Вас по Вашим-же постам (за неимением сколь-нибудь внятного Вашего исходника - ну не считать-же право вот это Цитата Код 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); } достойным разговоров об оптимизации  ? И "профи" написавшего присланный Вами исходник. Никаких мифических персонажей не обсуждаю. Да и Вам отвечать по мамнадцатому разу на перепевки "у нас есть такие ракеты, но мы вам о них не расскажем" и про мифических персонажей написавших мифический исходник в общем-то утомило. Больше лично я эти "песни" не слушаю, и уж тем более не отвечаю. Цитата Резонно. Затем же, зачем и вы рассказали про свою жену, которая прилетела из риги. Из Праги  , но резонно. Признаю 8 пункт необоснованными наездом с моей стороны - прошу за него извинить  , был не прав. Цитата(Petka @ Dec 28 2008, 14:16)  хотя-бы название? Почти канонический исходник поминаемого XTEA из интернета Код void encipher(unsigned int num_rounds, unsigned long* v, unsigned long* k) { unsigned long v0=v[0], v1=v[1], i; unsigned long sum=0, delta=0x9E3779B9; for(i=0; i<num_rounds; i++) { v0 += (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]); sum += delta; v1 += (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum>>11) & 3]); } v[0]=v0; v[1]=v1; } void decipher(unsigned int num_rounds, unsigned long* v, unsigned long* k) { unsigned long v0=v[0], v1=v[1], i; unsigned long delta=0x9E3779B9, sum=delta*num_rounds; for(i=0; i<num_rounds; i++) { v1 -= (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum>>11) & 3]); sum -= delta; v0 -= (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]); } v[0]=v0; v[1]=v1; } Кстати, в лоб скомпилированный 'cipher' под ARM/ARM Mode почти вдвое меньше, чем под AVR. Причем для заточенного под 8bit AES разницы практически нет, а если не подправить слегка хоть местами под 32bit, то на ARM толще  но резонно. Признаю 8 пункт необоснованными с моей стороны. Цитата(Petka @ Dec 28 2008, 14:16)  хотя-бы название? Почти канонический исходник поминаемого XTEA из интернета Код void encipher(unsigned int num_rounds, unsigned long* v, unsigned long* k) { unsigned long v0=v[0], v1=v[1], i; unsigned long sum=0, delta=0x9E3779B9; for(i=0; i<num_rounds; i++) { v0 += (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]); sum += delta; v1 += (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum>>11) & 3]); } v[0]=v0; v[1]=v1; } void decipher(unsigned int num_rounds, unsigned long* v, unsigned long* k) { unsigned long v0=v[0], v1=v[1], i; unsigned long delta=0x9E3779B9, sum=delta*num_rounds; for(i=0; i<num_rounds; i++) { v1 -= (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum>>11) & 3]); sum -= delta; v0 -= (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]); } v[0]=v0; v[1]=v1; } Кстати, в лоб скомпилированный 'cipher' под ARM/ARM Mode почти вдвое меньше, чем под AVR. Причем для заточенного под 8bit AES разницы практически нет, а если не подправить слегка хоть местами под 32bit, то на ARM толще  Сколько у Вас Гостов Сколько у Вас Гостовский 'движек' на AVR занял?
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Dec 28 2008, 15:59
|
Профессионал
    
Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886

|
Цитата(zltigo @ Dec 28 2008, 17:15)  Сколько у Вас Гостовский 'движек' на AVR занял? Никогда его ещё не пробовал на AVR. "В лоб" получилось: ГОСТ 786 байта. (кодер+декодер) XTEA 972 байта. (кодер+декодер) Никаких оптимизаций не делал для 8ми бит.
|
|
|
|
|
Dec 28 2008, 16:35
|
Профессионал
    
Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886

|
Цитата(zltigo @ Dec 28 2008, 19:05)  Очень странно. Сейчас посмотреть не могу, но вышепреведенный исходник движка декодера откомпилировлся для AVR в немногим больше 200 байт. Кодер там практически такой-же...200 + 200 = 972???? за что купил, за то продаю: CODE
00000388 <encipher>:
void encipher(unsigned int num_rounds, unsigned long* v, unsigned long* k) { 388: 2f 92 push r2 38a: 3f 92 push r3 38c: 4f 92 push r4 38e: 5f 92 push r5 390: 6f 92 push r6 392: 7f 92 push r7 394: 8f 92 push r8 396: 9f 92 push r9 398: af 92 push r10 39a: bf 92 push r11 39c: cf 92 push r12 39e: df 92 push r13 3a0: ef 92 push r14 3a2: ff 92 push r15 3a4: 0f 93 push r16 3a6: 1f 93 push r17 3a8: df 93 push r29 3aa: cf 93 push r28 3ac: cd b7 in r28, 0x3d; 61 3ae: de b7 in r29, 0x3e; 62 3b0: 2a 97 sbiw r28, 0x0a; 10 3b2: 0f b6 in r0, 0x3f; 63 3b4: f8 94 cli 3b6: de bf out 0x3e, r29; 62 3b8: 0f be out 0x3f, r0; 63 3ba: cd bf out 0x3d, r28; 61 3bc: 7a 87 std Y+10, r23; 0x0a 3be: 69 87 std Y+9, r22; 0x09 3c0: ba 01 movw r22, r20 unsigned long v0=v[0], v1=v[1], i; 3c2: a9 85 ldd r26, Y+9; 0x09 3c4: ba 85 ldd r27, Y+10; 0x0a 3c6: 2d 90 ld r2, X+ 3c8: 3d 90 ld r3, X+ 3ca: 4d 90 ld r4, X+ 3cc: 5c 90 ld r5, X 3ce: 13 97 sbiw r26, 0x03; 3 3d0: 14 96 adiw r26, 0x04; 4 3d2: 6d 90 ld r6, X+ 3d4: 7d 90 ld r7, X+ 3d6: 8d 90 ld r8, X+ 3d8: 9c 90 ld r9, X 3da: 17 97 sbiw r26, 0x07; 7 3dc: 19 82 std Y+1, r1; 0x01 3de: 1a 82 std Y+2, r1; 0x02 3e0: 1b 82 std Y+3, r1; 0x03 3e2: 1c 82 std Y+4, r1; 0x04 3e4: aa 24 eor r10, r10 3e6: bb 24 eor r11, r11 3e8: 65 01 movw r12, r10 unsigned long sum=0, delta=0x9E3779B9; for(i=0; i<num_rounds; i++) { 3ea: 9c 01 movw r18, r24 3ec: 40 e0 ldi r20, 0x00; 0 3ee: 50 e0 ldi r21, 0x00; 0 3f0: 2d 83 std Y+5, r18; 0x05 3f2: 3e 83 std Y+6, r19; 0x06 3f4: 4f 83 std Y+7, r20; 0x07 3f6: 58 87 std Y+8, r21; 0x08 3f8: 83 c0 rjmp .+262 ; 0x500 <encipher+0x178> v0 += (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]); 3fa: f5 01 movw r30, r10 3fc: e3 70 andi r30, 0x03; 3 3fe: f0 70 andi r31, 0x00; 0 400: ee 0f add r30, r30 402: ff 1f adc r31, r31 404: ee 0f add r30, r30 406: ff 1f adc r31, r31 408: e6 0f add r30, r22 40a: f7 1f adc r31, r23 40c: e0 80 ld r14, Z 40e: f1 80 ldd r15, Z+1; 0x01 410: 02 81 ldd r16, Z+2; 0x02 412: 13 81 ldd r17, Z+3; 0x03 414: ea 0c add r14, r10 416: fb 1c adc r15, r11 418: 0c 1d adc r16, r12 41a: 1d 1d adc r17, r13 41c: d4 01 movw r26, r8 41e: c3 01 movw r24, r6 420: f5 e0 ldi r31, 0x05; 5 422: b6 95 lsr r27 424: a7 95 ror r26 426: 97 95 ror r25 428: 87 95 ror r24 42a: fa 95 dec r31 42c: d1 f7 brne .-12 ; 0x422 <encipher+0x9a> 42e: a4 01 movw r20, r8 430: 93 01 movw r18, r6 432: e4 e0 ldi r30, 0x04; 4 434: 22 0f add r18, r18 436: 33 1f adc r19, r19 438: 44 1f adc r20, r20 43a: 55 1f adc r21, r21 43c: ea 95 dec r30 43e: d1 f7 brne .-12 ; 0x434 <encipher+0xac> 440: 82 27 eor r24, r18 442: 93 27 eor r25, r19 444: a4 27 eor r26, r20 446: b5 27 eor r27, r21 448: 86 0d add r24, r6 44a: 97 1d adc r25, r7 44c: a8 1d adc r26, r8 44e: b9 1d adc r27, r9 450: e8 26 eor r14, r24 452: f9 26 eor r15, r25 454: 0a 27 eor r16, r26 456: 1b 27 eor r17, r27 458: 2e 0c add r2, r14 45a: 3f 1c adc r3, r15 45c: 40 1e adc r4, r16 45e: 51 1e adc r5, r17 sum += delta; 460: 89 eb ldi r24, 0xB9; 185 462: 99 e7 ldi r25, 0x79; 121 464: a7 e3 ldi r26, 0x37; 55 466: be e9 ldi r27, 0x9E; 158 468: a8 0e add r10, r24 46a: b9 1e adc r11, r25 46c: ca 1e adc r12, r26 46e: db 1e adc r13, r27 v1 += (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum>>11) & 3]); 470: a2 01 movw r20, r4 472: 91 01 movw r18, r2 474: 05 e0 ldi r16, 0x05; 5 476: 56 95 lsr r21 478: 47 95 ror r20 47a: 37 95 ror r19 47c: 27 95 ror r18 47e: 0a 95 dec r16 480: d1 f7 brne .-12 ; 0x476 <encipher+0xee> 482: d2 01 movw r26, r4 484: c1 01 movw r24, r2 486: 14 e0 ldi r17, 0x04; 4 488: 88 0f add r24, r24 48a: 99 1f adc r25, r25 48c: aa 1f adc r26, r26 48e: bb 1f adc r27, r27 490: 1a 95 dec r17 492: d1 f7 brne .-12 ; 0x488 <encipher+0x100> 494: 28 27 eor r18, r24 496: 39 27 eor r19, r25 498: 4a 27 eor r20, r26 49a: 5b 27 eor r21, r27 49c: 22 0d add r18, r2 49e: 33 1d adc r19, r3 4a0: 44 1d adc r20, r4 4a2: 55 1d adc r21, r5 4a4: d6 01 movw r26, r12 4a6: c5 01 movw r24, r10 4a8: fb e0 ldi r31, 0x0B; 11 4aa: b6 95 lsr r27 4ac: a7 95 ror r26 4ae: 97 95 ror r25 4b0: 87 95 ror r24 4b2: fa 95 dec r31 4b4: d1 f7 brne .-12 ; 0x4aa <encipher+0x122> 4b6: 83 70 andi r24, 0x03; 3 4b8: 90 70 andi r25, 0x00; 0 4ba: 88 0f add r24, r24 4bc: 99 1f adc r25, r25 4be: 88 0f add r24, r24 4c0: 99 1f adc r25, r25 4c2: 86 0f add r24, r22 4c4: 97 1f adc r25, r23 4c6: fc 01 movw r30, r24 4c8: 80 81 ld r24, Z 4ca: 91 81 ldd r25, Z+1; 0x01 4cc: a2 81 ldd r26, Z+2; 0x02 4ce: b3 81 ldd r27, Z+3; 0x03 4d0: 8a 0d add r24, r10 4d2: 9b 1d adc r25, r11 4d4: ac 1d adc r26, r12 4d6: bd 1d adc r27, r13 4d8: 28 27 eor r18, r24 4da: 39 27 eor r19, r25 4dc: 4a 27 eor r20, r26 4de: 5b 27 eor r21, r27 4e0: 62 0e add r6, r18 4e2: 73 1e adc r7, r19 4e4: 84 1e adc r8, r20 4e6: 95 1e adc r9, r21
void encipher(unsigned int num_rounds, unsigned long* v, unsigned long* k) { unsigned long v0=v[0], v1=v[1], i; unsigned long sum=0, delta=0x9E3779B9; for(i=0; i<num_rounds; i++) { 4e8: 29 81 ldd r18, Y+1; 0x01 4ea: 3a 81 ldd r19, Y+2; 0x02 4ec: 4b 81 ldd r20, Y+3; 0x03 4ee: 5c 81 ldd r21, Y+4; 0x04 4f0: 2f 5f subi r18, 0xFF; 255 4f2: 3f 4f sbci r19, 0xFF; 255 4f4: 4f 4f sbci r20, 0xFF; 255 4f6: 5f 4f sbci r21, 0xFF; 255 4f8: 29 83 std Y+1, r18; 0x01 4fa: 3a 83 std Y+2, r19; 0x02 4fc: 4b 83 std Y+3, r20; 0x03 4fe: 5c 83 std Y+4, r21; 0x04 500: 89 81 ldd r24, Y+1; 0x01 502: 9a 81 ldd r25, Y+2; 0x02 504: ab 81 ldd r26, Y+3; 0x03 506: bc 81 ldd r27, Y+4; 0x04 508: 2d 81 ldd r18, Y+5; 0x05 50a: 3e 81 ldd r19, Y+6; 0x06 50c: 4f 81 ldd r20, Y+7; 0x07 50e: 58 85 ldd r21, Y+8; 0x08 510: 82 17 cp r24, r18 512: 93 07 cpc r25, r19 514: a4 07 cpc r26, r20 516: b5 07 cpc r27, r21 518: 08 f4 brcc .+2 ; 0x51c <encipher+0x194> 51a: 6f cf rjmp .-290 ; 0x3fa <encipher+0x72> v0 += (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]); sum += delta; v1 += (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum>>11) & 3]); } v[0]=v0; v[1]=v1; 51c: a9 85 ldd r26, Y+9; 0x09 51e: ba 85 ldd r27, Y+10; 0x0a 520: 2d 92 st X+, r2 522: 3d 92 st X+, r3 524: 4d 92 st X+, r4 526: 5c 92 st X, r5 528: 13 97 sbiw r26, 0x03; 3 52a: fd 01 movw r30, r26 52c: 64 82 std Z+4, r6; 0x04 52e: 75 82 std Z+5, r7; 0x05 530: 86 82 std Z+6, r8; 0x06 532: 97 82 std Z+7, r9; 0x07 } 534: 2a 96 adiw r28, 0x0a; 10 536: 0f b6 in r0, 0x3f; 63 538: f8 94 cli 53a: de bf out 0x3e, r29; 62 53c: 0f be out 0x3f, r0; 63 53e: cd bf out 0x3d, r28; 61 540: cf 91 pop r28 542: df 91 pop r29 544: 1f 91 pop r17 546: 0f 91 pop r16 548: ff 90 pop r15 54a: ef 90 pop r14 54c: df 90 pop r13 54e: cf 90 pop r12 550: bf 90 pop r11 552: af 90 pop r10 554: 9f 90 pop r9 556: 8f 90 pop r8 558: 7f 90 pop r7 55a: 6f 90 pop r6 55c: 5f 90 pop r5 55e: 4f 90 pop r4 560: 3f 90 pop r3 562: 2f 90 pop r2 564: 08 95 ret
00000566 <decipher>:
void decipher(unsigned int num_rounds, unsigned long* v, unsigned long* k) { 566: 2f 92 push r2 568: 3f 92 push r3 56a: 4f 92 push r4 56c: 5f 92 push r5 56e: 6f 92 push r6 570: 7f 92 push r7 572: 8f 92 push r8 574: 9f 92 push r9 576: af 92 push r10 578: bf 92 push r11 57a: cf 92 push r12 57c: df 92 push r13 57e: ef 92 push r14 580: ff 92 push r15 582: 0f 93 push r16 584: 1f 93 push r17 586: df 93 push r29 588: cf 93 push r28 58a: cd b7 in r28, 0x3d; 61 58c: de b7 in r29, 0x3e; 62 58e: 2c 97 sbiw r28, 0x0c; 12 590: 0f b6 in r0, 0x3f; 63 592: f8 94 cli 594: de bf out 0x3e, r29; 62 596: 0f be out 0x3f, r0; 63 598: cd bf out 0x3d, r28; 61 59a: 7c 87 std Y+12, r23; 0x0c 59c: 6b 87 std Y+11, r22; 0x0b 59e: 5a 87 std Y+10, r21; 0x0a 5a0: 49 87 std Y+9, r20; 0x09 unsigned long v0=v[0], v1=v[1], i; 5a2: db 01 movw r26, r22 5a4: 2d 90 ld r2, X+ 5a6: 3d 90 ld r3, X+ 5a8: 4d 90 ld r4, X+ 5aa: 5c 90 ld r5, X 5ac: 13 97 sbiw r26, 0x03; 3 5ae: 14 96 adiw r26, 0x04; 4 5b0: 6d 90 ld r6, X+ 5b2: 7d 90 ld r7, X+ 5b4: 8d 90 ld r8, X+ 5b6: 9c 90 ld r9, X 5b8: 17 97 sbiw r26, 0x07; 7 unsigned long delta=0x9E3779B9, sum=delta*num_rounds; 5ba: 9c 01 movw r18, r24 5bc: 40 e0 ldi r20, 0x00; 0 5be: 50 e0 ldi r21, 0x00; 0 5c0: 2d 83 std Y+5, r18; 0x05 5c2: 3e 83 std Y+6, r19; 0x06 5c4: 4f 83 std Y+7, r20; 0x07 5c6: 58 87 std Y+8, r21; 0x08 5c8: ca 01 movw r24, r20 5ca: b9 01 movw r22, r18 5cc: 29 eb ldi r18, 0xB9; 185 5ce: 39 e7 ldi r19, 0x79; 121 5d0: 47 e3 ldi r20, 0x37; 55 5d2: 5e e9 ldi r21, 0x9E; 158 5d4: 1d d5 rcall .+2618 ; 0x1010 <__mulsi3> 5d6: 5b 01 movw r10, r22 5d8: 6c 01 movw r12, r24 5da: 19 82 std Y+1, r1; 0x01 5dc: 1a 82 std Y+2, r1; 0x02 5de: 1b 82 std Y+3, r1; 0x03 5e0: 1c 82 std Y+4, r1; 0x04 5e2: 87 c0 rjmp .+270 ; 0x6f2 <decipher+0x18c> for(i=0; i<num_rounds; i++) { v1 -= (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum>>11) & 3]); 5e4: d6 01 movw r26, r12 5e6: c5 01 movw r24, r10 5e8: fb e0 ldi r31, 0x0B; 11 5ea: b6 95 lsr r27 5ec: a7 95 ror r26 5ee: 97 95 ror r25 5f0: 87 95 ror r24 5f2: fa 95 dec r31 5f4: d1 f7 brne .-12 ; 0x5ea <decipher+0x84> 5f6: 83 70 andi r24, 0x03; 3 5f8: 90 70 andi r25, 0x00; 0 5fa: 88 0f add r24, r24 5fc: 99 1f adc r25, r25 5fe: 88 0f add r24, r24 600: 99 1f adc r25, r25 602: 49 85 ldd r20, Y+9; 0x09 604: 5a 85 ldd r21, Y+10; 0x0a 606: 84 0f add r24, r20 608: 95 1f adc r25, r21 60a: dc 01 movw r26, r24 60c: ed 90 ld r14, X+ 60e: fd 90 ld r15, X+ 610: 0d 91 ld r16, X+ 612: 1c 91 ld r17, X 614: ea 0c add r14, r10 616: fb 1c adc r15, r11 618: 0c 1d adc r16, r12 61a: 1d 1d adc r17, r13 61c: d2 01 movw r26, r4 61e: c1 01 movw r24, r2 620: 75 e0 ldi r23, 0x05; 5 622: b6 95 lsr r27 624: a7 95 ror r26 626: 97 95 ror r25 628: 87 95 ror r24 62a: 7a 95 dec r23 62c: d1 f7 brne .-12 ; 0x622 <decipher+0xbc> 62e: a2 01 movw r20, r4 630: 91 01 movw r18, r2 632: 64 e0 ldi r22, 0x04; 4 634: 22 0f add r18, r18 636: 33 1f adc r19, r19 638: 44 1f adc r20, r20 63a: 55 1f adc r21, r21 63c: 6a 95 dec r22 63e: d1 f7 brne .-12 ; 0x634 <decipher+0xce> 640: 82 27 eor r24, r18 642: 93 27 eor r25, r19 644: a4 27 eor r26, r20 646: b5 27 eor r27, r21 648: 82 0d add r24, r2 64a: 93 1d adc r25, r3 64c: a4 1d adc r26, r4 64e: b5 1d adc r27, r5 650: e8 26 eor r14, r24 652: f9 26 eor r15, r25 654: 0a 27 eor r16, r26 656: 1b 27 eor r17, r27 658: 6e 18 sub r6, r14 65a: 7f 08 sbc r7, r15 65c: 80 0a sbc r8, r16 65e: 91 0a sbc r9, r17 sum -= delta; 660: 27 e4 ldi r18, 0x47; 71 662: 36 e8 ldi r19, 0x86; 134 664: 48 ec ldi r20, 0xC8; 200 666: 51 e6 ldi r21, 0x61; 97 668: a2 0e add r10, r18 66a: b3 1e adc r11, r19 66c: c4 1e adc r12, r20 66e: d5 1e adc r13, r21 v0 -= (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]); 670: a4 01 movw r20, r8 672: 93 01
|
|
|
|
|
Dec 29 2008, 11:06
|

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

|
Цитата(Petka @ Dec 28 2008, 20:19)  IARом не обладаю, так что может будем лучше сравнивать в доступном gcc? Что-то мне не хочется GCC toolchain под AVR себе добавлять, тем более имеет быть проблема выбора... Для AVR я пишу редко, под несерьезных (которых не волнует лицензионность) заказчиков, а для своих целей, мне на самом деле хватит самых мелких (которые конкурентноспособны) AVR и 4K. Цитата Я Вам верю что 200 с копейками байт получалось под IARом. А вот мне что-то кажется очень странным такой провал с GCC. Для того-же ARM, не говоря об 386 он весьма неплох. Какой версией/сборкой компилировали?
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
Сообщений в этой теме
Огурцов 100 байт не хватает Dec 25 2008, 20:25 rezident Хоть и , но нелишне напомнить История одного бай... Dec 25 2008, 20:28 Огурцов Помню.
Фишка еще в том, что простое увеличение пам... 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 Цитата(rezident @ Dec 25 2008, 23:28) Хот... Dec 26 2008, 10:58  Огурцов Цитата(zltigo @ Dec 26 2008, 10:58) Да не... Dec 26 2008, 15:07   zltigo Цитата(Огурцов @ Dec 26 2008, 18:07) Ну з... Dec 26 2008, 16:06    singlskv Цитата(zltigo @ Dec 26 2008, 19:06) Решит... Dec 26 2008, 16:59     Огурцов Вообще, меня не уполномачивали публиковать исходни... Dec 26 2008, 17:40      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      singlskv Цитата(Огурцов @ Dec 26 2008, 20:40) Вооб... Dec 26 2008, 19:00       Огурцов http://www.atmel.com/dyn/resources/prod_documents/... Dec 26 2008, 19:27        zltigo Цитата(Огурцов @ Dec 26 2008, 22:12) http... Dec 26 2008, 19:29         Огурцов Дада, сделайте из этого 1.5-1.7 килобайта, чтобы о... Dec 26 2008, 19:57          zltigo Цитата(Огурцов @ Dec 26 2008, 22:57) Дада... Dec 26 2008, 21:45           Огурцов Цитата(zltigo @ Dec 26 2008, 21:45) Треп ... Dec 27 2008, 06:21            zltigo Цитата(Огурцов @ Dec 27 2008, 09:21) он в... Dec 27 2008, 10:37             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    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            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
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|
|