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

 
 
> 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
Ответов
Rst7
сообщение Dec 30 2008, 11:13
Сообщение #2


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
в С оверхед жуткий из-за приведения всего к 32бит.


Где?
Код
        RSEG CODE:CODE:NOROOT(1)
//    3 unsigned long mmm(unsigned int a, unsigned int b)
mmm:
//    4 {
//    5   return (unsigned long)a*b;
        CLR     R2
        MUL     R17, R19
        MOVW    R23:R22, R1:R0
        MUL     R16, R18
        MOVW    R21:R20, R1:R0
        MUL     R17, R18
        ADD     R21, R0
        ADC     R22, R1
        ADC     R23, R2
        MUL     R19, R16
        ADD     R21, R0
        ADC     R22, R1
        ADC     R23, R2
        MOVW    R17:R16, R21:R20
        MOVW    R19:R18, R23:R22
        RET
//    6 }


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
singlskv
сообщение Dec 30 2008, 12:19
Сообщение #3


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(Rst7 @ Dec 30 2008, 14:13) *
Где?
IAR в таких случаях действительно оптимизирует,
gcc увы следует стандарту и умножает 32X32
Код
  6a:    0c d0           rcall    .+24     ; 0x84 <__mulsi3>
.................................
00000084 <__mulsi3>:
  84:    62 9f           mul    r22, r18
  86:    d0 01           movw    r26, r0
  88:    73 9f           mul    r23, r19
  8a:    f0 01           movw    r30, r0
  8c:    82 9f           mul    r24, r18
  8e:    e0 0d           add    r30, r0
  90:    f1 1d           adc    r31, r1
  92:    64 9f           mul    r22, r20
  94:    e0 0d           add    r30, r0
  96:    f1 1d           adc    r31, r1
  98:    92 9f           mul    r25, r18
  9a:    f0 0d           add    r31, r0
  9c:    83 9f           mul    r24, r19
  9e:    f0 0d           add    r31, r0
  a0:    74 9f           mul    r23, r20
  a2:    f0 0d           add    r31, r0
  a4:    65 9f           mul    r22, r21
  a6:    f0 0d           add    r31, r0
  a8:    99 27           eor    r25, r25
  aa:    72 9f           mul    r23, r18
  ac:    b0 0d           add    r27, r0
  ae:    e1 1d           adc    r30, r1
  b0:    f9 1f           adc    r31, r25
  b2:    63 9f           mul    r22, r19
  b4:    b0 0d           add    r27, r0
  b6:    e1 1d           adc    r30, r1
  b8:    f9 1f           adc    r31, r25
  ba:    bd 01           movw    r22, r26
  bc:    cf 01           movw    r24, r30
  be:    11 24           eor    r1, r1
  c0:    08 95           ret
Go to the top of the page
 
+Quote Post
aesok
сообщение Dec 30 2008, 13:26
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Цитата(singlskv @ Dec 30 2008, 15:19) *
gcc увы следует стандарту и умножает 32X32


Дело не в стандарте, просто в avr back-end нет инструкций для (s/u)16x(s/u)16=32-умножения. Я смотрел это, в принципе их несложно добавить.

При их наличии может немного возрастать размер кода, но время выполнения уменьшиться.

Анатолий.

Цитата(Rst7 @ Dec 30 2008, 16:17) *
А вообще, хотел ответить в духе "ну и пусть этот гнусь вместе со своими адептами подхода "жрите что дают" убъются апстену", ну будем считать, что сдержался smile.gif


Жрите что дают, не нравиться готовте сами, не умеете платите деньги... Не сдержался.....


Анатолий.

Сообщение отредактировал aesok - Dec 30 2008, 13:31
Go to the top of the page
 
+Quote Post
singlskv
сообщение Dec 30 2008, 13:49
Сообщение #5


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(aesok @ Dec 30 2008, 16:26) *
Дело не в стандарте, просто в avr back-end нет инструкций для (s/u)16x(s/u)16=32-умножения. Я смотрел это, в принципе их несложно добавить.
про стандарт я имел в виду что gcc делает строго по стандарту, те "обязан"
при таком обращении преобразовать к 32бит.

На самом деле, ИМХО, стоило бы просто добавить в libc набор функций(частично инлайн)"
16x8=32
16x16=32
24x8=32
32/8=32
32/16=16
24/8=24
24/16=16
итд.
Go to the top of the page
 
+Quote Post
aesok
сообщение Dec 30 2008, 14:35
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Цитата(singlskv @ Dec 30 2008, 16:49) *
про стандарт я имел в виду что gcc делает строго по стандарту, те "обязан"
при таком обращении преобразовать к 32бит.


В GCC имеется полный набор шаблонов инструкций для описания 32 битных
операций умножения 'mulsi3', `ssmulsi3', `usmulsi3', где 'si' означеает
single integer (или 32-бит) mode 's' и 'u' signed/unsigned. Также есть набор
шаблонов для 16x16=32 бит умножения `mulhisi3', `umulhisi3', `usmulhisi3',
где 'hi' half integer (16-бит) mode размерность операндов и 'si" mode размерность
результата.

Так как последние не реализованы для avr платформы, то компилятор всегда
использует 32-битное умножение для 16- и 32-битных операндов, если необходим
32-битный результат.

Добавить эти инструкции несложно, при этом добаляются функции __mulhisi3,
__ssmulhisi3 __sumulhisi3, Но может оказаться так что в результирующем коде
вместо 4 вызовов функции __mulsi3, будет по одному вызову __mulsi3,
__mulhisi3, __ssmulhisi3 __sumulhisi3 при этом размер кода возрастет. Но все
равно в большинстве случаях должен быть выигрыш и в размере кода тоже, не
только в скорости.

Анатолий.

Сообщение отредактировал aesok - Dec 30 2008, 14:36
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
- - 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
||- - 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 09:37
Рейтинг@Mail.ru


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