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

 
 
> Как не звать __aeabi_idiv и иже сними?
kosyak©
сообщение Dec 9 2010, 11:59
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 179
Регистрация: 1-10-07
Из: НЧ
Пользователь №: 30 966



Есть код
Код
...
    volatile int d = 100;
    volatile int k = 11;
    volatile int q = d / k;
...

Компилятор (EWARM6101) при любом из уровней оптимизации компилирует это как
Код
                   volatile int d = 100;
  MOV      R1,#+100
  STR      R1,[SP, #+4]
                     volatile int k = 11;
  MOV      R1,#+11
  STR      R1,[SP, #+0]
     65              volatile int q = d / k;
                                  ^
   LDR      R0,[SP, #+4]
   LDR      R1,[SP, #+0]
   BL       __aeabi_idiv
   STR      R0,[SP, #+8]


Как заставить его не использовать __aeabi_idiv?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
scifi
сообщение Dec 10 2010, 10:42
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Согласен, что случай, когда код прошивки флэш должен быть в ОЗУ, весьма актуален. Насколько я знаю, у компилятора нет настроек, позволяющих гарантировать, что кусок кода, скопированный в ОЗУ, не будет вызывать функции из флэш. Можно, конечно, подрихтовать код "ручками", но нет гарантии, что при переходе на новую версию компилятора или при смене его настроек не придётся рихтовать код снова. Чтобы это гарантировать, нужно оформить код в ОЗУ как самостоятельный проект, полностью размещённый в ОЗУ. Для связи с основной прошивкой можно придумать простенький ABI: таблица указателей на функции. Забыл добавить: или писать код в ОЗУ на ассемблере.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- kosyak©   Как не звать __aeabi_idiv и иже сними?   Dec 9 2010, 11:59
- - demiurg_spb   Код static const int D = 100; static const int K ...   Dec 9 2010, 14:00
- - scifi   Цитата(kosyak© @ Dec 9 2010, 14:59) Как з...   Dec 9 2010, 19:02
- - kosyak©   Так и думал что в волатиле начнут носом тыкать Ну...   Dec 9 2010, 20:11
|- - IgorKossak   QUOTE (kosyak© @ Dec 9 2010, 22:11) Интер...   Dec 10 2010, 08:06
- - kosyak©   Архитектура действительно ARM7TDMI-S. Я тоже счита...   Dec 10 2010, 08:13
- - IgorKossak   А всё же. Каков размер страницы и почему он не кон...   Dec 10 2010, 08:18
- - kosyak©   Ну тогда дополню картину: Стоит датафлэш AT45DBxxx...   Dec 10 2010, 08:23
- - MALLOY2   Академический вопрос, что в загрузчике делает __ae...   Dec 10 2010, 09:03
- - kosyak©   Страничная организация DataFlash. Из линейного адр...   Dec 10 2010, 09:12
- - MALLOY2   Мда..... так и знал Все делается через маску и с...   Dec 10 2010, 09:39
- - kosyak©   Цитата(kosyak© @ Dec 10 2010, 11:23) ... ...   Dec 10 2010, 09:45
- - MALLOY2   И какие с этим проблемы ? Глава 14. Manufacturer ...   Dec 10 2010, 09:53
- - kosyak©   Уф! Вообщем так - на плату может быть поставле...   Dec 10 2010, 09:57
- - MALLOY2   13. "Power of 2" Binary Page Size Option...   Dec 10 2010, 09:59
- - kosyak©   Ладно - цитирую мануал: User Configurable Page Si...   Dec 10 2010, 10:04
- - MALLOY2   Создаем проблемы и героически их решаем Вы знает...   Dec 10 2010, 10:15
|- - kosyak©   Ну...еще раз скажу - вопрос не про конкретное прим...   Dec 10 2010, 10:20
- - _Bill   QUOTE (kosyak© @ Dec 9 2010, 15:59) Есть ...   Dec 11 2010, 21:08


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

 


RSS Текстовая версия Сейчас: 21st August 2025 - 01:26
Рейтинг@Mail.ru


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