реклама на сайте
подробности

 
 
> 100 байт не хватает
Огурцов
сообщение Dec 25 2008, 20:25
Сообщение #1


Гуру
******

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SasaVitebsk
сообщение Dec 27 2008, 21:43
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Вот все мы не без изъяна. У каждого из нас есть свои ограничения. Иногда, возможно даже чеще чем надо, не хватает силы воли для получения новых знаний (я о себе к примеру). А иногда, входишь в "транс" и за неделю проделываешь работу, которую откладывал больше года.

smile.gif

Давайте вспомним, что до Нового Года остался совсем пустяк и простим друг другу свои мелкие недостатки.

Я, к сожалению, совсем что-то не чувствую приближения праздника в этом году. Может виноват в этом Step 7. Скорей бы его в топку и назад к компилятору С.
biggrin.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 27 2008, 23:01
Сообщение #3


Гуру
******

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



Цитата(SasaVitebsk @ Dec 28 2008, 00:43) *
Давайте вспомним, что до Нового Года остался совсем пустяк и простим друг другу свои мелкие недостатки.

Согласен smile.gif.

Цитата(Огурцов @ Dec 28 2008, 01:56) *
Это уже весь бред ? Или еще будет ?

А, так Вы это бредили sad.gif! То-то я смотрю что-то про красное в крапинку начали нести... Хорошо, что предупредили, не сразу понял sad.gif.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Dec 28 2008, 09:13
Сообщение #4


Гуру
******

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



Цитата(zltigo @ Dec 27 2008, 23:01) *
А, так Вы это бредили sad.gif! То-то я смотрю что-то про красное в крапинку начали нести... Хорошо, что предупредили, не сразу понял sad.gif.

Я так понимаю, судя по продолжающемуся хамству, оригинальный код вы уже разместили в ~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 бит, я еще и не искал. С ним, вероятно, могло бы быть гораздо лучше.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 28 2008, 10:57
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 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 исходник, то возможно и был-бы повод для обсуждения. А так, так sad.gif. Хотя нет, небольшая польза есть, если у кого были иллюзии, что в Интернете, пусть даже у "профессионалов" именитой фирмы, можно найти реально приличные исходники sad.gif, то, надеюсь, они хоть слегка развеялись.

Цитата(Petka @ Dec 28 2008, 13:19) *
Очень спорно. ИМХО ГОСТ компактнее получится. Если приведёте свою оптимальную реализацию (на Си, и лучше оптимизированную для winavr) DES .

Ну сишные DES более, чем доступны, а "своими" и уж тем боле под AVR не занимался, ГОСТ реализация как-то на глаза не попадалась, но явно должна где-нибудь лежать. Для начала можете сравнить их и не в оптимизированном виде. По идее, когда-то давно использовал некий более простой, нежели DES (но его уровня) алгоритм - могу,когда вернусь домой, поискать в своих архивах.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Dec 28 2008, 12:29
Сообщение #6


Гуру
******

Группа: Участник
Сообщений: 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. Потом, вообще, зачем-то рассказали нам всем, как Вам нравится работать кассиром....

Резонно. Затем же, зачем и вы рассказали про свою жену, которая прилетела из риги.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 28 2008, 14:15
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 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);
}

достойным разговоров об оптимизации smile.gif?
И "профи" написавшего присланный Вами исходник.
Никаких мифических персонажей не обсуждаю. Да и Вам отвечать по мамнадцатому разу на перепевки "у нас есть такие ракеты, но мы вам о них не расскажем" и про мифических персонажей написавших мифический исходник в общем-то утомило. Больше лично я эти "песни" не слушаю, и уж тем более не отвечаю.
Цитата
Резонно. Затем же, зачем и вы рассказали про свою жену, которая прилетела из риги.

Из Праги smile.gif, но резонно. Признаю 8 пункт необоснованными наездом с моей стороны - прошу за него извинить sad.gif, был не прав.


Цитата(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 толще sad.gif но резонно. Признаю 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 толще sad.gif
Сколько у Вас Гостов
Сколько у Вас Гостовский 'движек' на AVR занял?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Petka
сообщение Dec 28 2008, 15:59
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(zltigo @ Dec 28 2008, 17:15) *
Сколько у Вас Гостовский 'движек' на AVR занял?

Никогда его ещё не пробовал на AVR. "В лоб" получилось:
ГОСТ 786 байта. (кодер+декодер)
XTEA 972 байта. (кодер+декодер)

Никаких оптимизаций не делал для 8ми бит.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 28 2008, 16:05
Сообщение #9


Гуру
******

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



Цитата(Petka @ Dec 28 2008, 18:59) *
XTEA 972 байта. (кодер+декодер)

Очень странно. Сейчас посмотреть не могу, но вышепреведенный исходник движка декодера откомпилировлся для AVR в немногим больше 200 байт. Кодер там практически такой-же...200 + 200 = 972????


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Petka
сообщение Dec 28 2008, 16:35
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 28 2008, 16:39
Сообщение #11


Гуру
******

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



Цитата(Petka @ Dec 28 2008, 19:35) *
за что купил, за то продаю:

31 вернусь домой - повторю и выложу "двухсотбайтовый" из под IAR.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Petka
сообщение Dec 28 2008, 17:19
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(zltigo @ Dec 28 2008, 19:39) *
31 вернусь домой - повторю и выложу "двухсотбайтовый" из под IAR.

IARом не обладаю, так что может будем лучше сравнивать в доступном gcc? Я Вам верю что 200 с копейками байт получалось под IARом. С другой стороны тогда ГОСТ получится ещё более кучерявым чем 200 байт wink.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 29 2008, 11:06
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Огурцов   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


Reply to this topicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 02:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.01635 секунд с 7
ELECTRONIX ©2004-2016