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

 
 
> avr-libc и uint64_t арифметика, или баг, или я чего-то не понимаю...
ARV
сообщение Sep 28 2009, 16:46
Сообщение #1


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

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Код
volatile uint64_t v1;
volatile uint32_t v2;

int main(void)
{
    v2 = v1/v2;
    PORTD = 12;
    while(1);
}
этот тривиальный код компилируется для attiny2313 в 3940 байтов flash и 278 байт ОЗУ!!!! это как такое называется?! при этом если обе переменные v1 и v2 сделать uint32_t, то размер кода становится практически в 20 раз меньше: 200 байт flash !!! что там такое в libc понаделано, что получается такое разрастание кода?! ведь если руками написать функцию деления "в столбик" - получится код значительно меньше...

P.S. разумеется, оптимизация -Os


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Lepeksiy
сообщение Sep 28 2009, 18:13
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 25-04-07
Пользователь №: 27 294



Ну дык никто не мешает посмотреть получившийся код...
Первое, что бросается в глаза - при 64 бит активно используется стек, в то время как при 32 бит обходится только регистрами. Плюс появляется множество ненужных пересылок. Вообще создалось впечатление, что тут "не ступала нога оптимизатора", несмотря на -Os.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ARV   avr-libc и uint64_t арифметика   Sep 28 2009, 16:46
- - ARV   я не вижу смысла смотреть в получающийся код - и т...   Sep 28 2009, 18:48
- - Goodefine   Цитата(Lepeksiy @ Sep 28 2009, 21:13) ......   Sep 28 2009, 19:08
|- - GetSmart   Цитата(Goodefine @ Sep 29 2009, 01:08) А ...   Sep 28 2009, 19:27
|- - ReAl   Цитата(GetSmart @ Sep 28 2009, 22:27) ИМХ...   Sep 28 2009, 21:59
- - IgorKossak   ARV, Вы полагаете, что разработчики где-то здесь, ...   Sep 28 2009, 19:13
|- - ARV   Цитата(IgorKossak @ Sep 28 2009, 23:13) A...   Sep 29 2009, 04:31
- - ReAl   Там таки явно что-то не то. Зачем-то большая табли...   Sep 28 2009, 20:52
|- - singlskv   Цитата(ReAl @ Sep 29 2009, 00:52) upd: ой...   Sep 28 2009, 22:53
- - _Pasha   учитывая то, что мне часто нужны быстрые умножения...   Sep 29 2009, 04:39
|- - klen   скомпилял этот пример вот что получилось для -Os ...   Oct 1 2009, 18:00
|- - ReAl   Цитата(klen @ Oct 1 2009, 21:00) если най...   Oct 2 2009, 13:42
|- - _Pasha   Цитата(ReAl @ Oct 2 2009, 16:42) Можно да...   Oct 2 2009, 16:19
|- - klen   Цитата(_Pasha @ Oct 2 2009, 20:19) Поскол...   Oct 2 2009, 18:25
|- - Petka   Цитата(klen @ Oct 2 2009, 22:25) .... за...   Oct 2 2009, 19:01
|- - singlskv   Цитата(Petka @ Oct 2 2009, 23:01) т.е. та...   Oct 2 2009, 21:46
- - ReAl   Цитата(singlskv @ Oct 3 2009, 00:46) ИМХО...   Oct 2 2009, 22:15
- - Княго   Интересно, зачем вам на авээрах делить 64-битные ч...   Oct 4 2009, 19:19


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

 


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


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