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

 
 
> Оптимизация умножения в GCC 4.7.2
amaora
сообщение Nov 29 2012, 18:11
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 421
Регистрация: 2-01-08
Пользователь №: 33 778



Фрагмент исходного кода.

Код
r = (r << 1) + (r << 3);


Преобразуется в умножение на 10, с использованием кода откуда-то из libgcc. В результате получаю.

Код
s2f.o: In function `f2s':
s2f.c:(.text+0xac): undefined reference to `__muluhisi3'


Использовать стартап код и умножения из libgcc не планирую. Проблема решается с -O2, однако хочется указать -Os.

Код
$ avr-gcc --version
avr-gcc (Gentoo 4.7.2 p1.1, pie-0.5.5) 4.7.2
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Сейчас собираю с такими ключами.

Код
CFLAGS    = -mmcu=atmega88
CFLAGS    += -fconserve-stack
CFLAGS  += -fno-strict-aliasing
CFLAGS  += -fno-tree-loop-ivcanon
CFLAGS  += -fno-builtin
CFLAGS  += -std=c99 -pipe -Wall -O2
AFLAGS    = -mmcu=atmega88
LFLAGS  = -m avr4 -T linker.ld


Какие варианты решения?

p.s. наверно проще всего написать свою умножалку на 10 через mul, может даже быстрее будет.
Go to the top of the page
 
+Quote Post



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

 


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


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