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

 
 
> Инкремент указателя и оптимизация
Rash
сообщение Oct 1 2015, 13:29
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 639
Регистрация: 5-09-05
Пользователь №: 8 231



День добрый.

Столкнулся с проблемой оптимизации, при инкременте указателя когда 2 строчки подряд. Оптимизация макс. по скорости. IAR ARM 7.40.3. Мк STMF4
Код
static void _setup_resp_ready(uint8_t** ppData_rx, bool allow_addr, uint8_t** ppData_tx)
{
  if(allow_addr != false)
    *(*(volatile uint_setup_addr_t**)&(*ppData_tx))++ = setup_addr;
  
  // !!! если NOP нет, то код будет оптимизирован
  __ASM("NOP");
    
   *((*ppData_tx)++) = *((*ppData_rx)++);
  
  return;
}

Прим. uint_setup_addr_t - задаётся тип, на данный момент uint16_t


скрины ассемблера
без оптимизации

макс. оптимизация по скорости

макс. оптимизация по скорости + NOP


Вопрос, возможно ли сделать запись чтобы не оптимизировался инкремент указателя? NOP конечно не критичен, но костыль. Отключить оптимизацию только для ф-ции не рассматриваю, т.к. подобные записи оформил виде макросов и могут быть в разных участках кода
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Rash   Инкремент указателя и оптимизация   Oct 1 2015, 13:29
- - scifi   Многабукаффниасилил. Я не пойму, жалоба на некорре...   Oct 1 2015, 13:43
- - Rash   да вроде не так много букв ). Проблема в том, что ...   Oct 1 2015, 16:50
|- - scifi   Цитата(Rash @ Oct 1 2015, 19:50) А вопрос...   Oct 1 2015, 16:53
- - Rash   1. Не нравятся костыли в любом виде, в данном случ...   Oct 1 2015, 17:08
|- - scifi   Вы не ответили на важный вопрос: "жалоба на н...   Oct 1 2015, 17:43
- - Rash   жалоба на то, что исчез инкремент, который не долж...   Oct 1 2015, 17:51
|- - scifi   Цитата(Rash @ Oct 1 2015, 20:51) жалоба н...   Oct 1 2015, 18:13
- - _Pasha   да там наверное нездоровый упор на CSE. просто сде...   Oct 1 2015, 18:31
|- - scifi   Цитата(_Pasha @ Oct 1 2015, 21:31) да там...   Oct 1 2015, 18:41
- - Rash   Цитата(scifi @ Oct 1 2015, 21:13) Жалоба ...   Oct 1 2015, 19:09
|- - scifi   Цитата(Rash @ Oct 1 2015, 22:09) Программ...   Oct 1 2015, 19:17
- - Rash   естественно, стоит при определении типа на указате...   Oct 1 2015, 19:23
|- - megajohn   Цитата(Rash @ Oct 1 2015, 23:23) естестве...   Oct 2 2015, 07:16
- - Valentine Loginov   Вам бы не полениться и сделать код читаемым, как н...   Oct 2 2015, 06:52
- - scifi   Кстати, безотносительно к тому, есть ли там volati...   Oct 2 2015, 07:27
- - zltigo   QUOTE (Rash @ Oct 1 2015, 16:29) *(*(vola...   Oct 2 2015, 08:12
- - Valentine Loginov   Цитата(megajohn @ Oct 2 2015, 10:16) я та...   Oct 2 2015, 10:27
- - Kabdim   *((*ppData_tx)++) = *((*ppData_rx)++); Вообще это ...   Oct 2 2015, 11:06
- - Rash   многопоточности нет (RTOS тоже), раньше код был с ...   Oct 2 2015, 11:07
|- - Kabdim   Цитата(Rash @ Oct 2 2015, 14:07) переменн...   Oct 2 2015, 11:12
|- - scifi   Цитата(Rash @ Oct 2 2015, 14:07) многопот...   Oct 2 2015, 11:43
- - Rash   компилятор я нигде не обвинял, а только спрашивал,...   Oct 2 2015, 11:56
|- - scifi   Цитата(Rash @ Oct 2 2015, 14:56) компилят...   Oct 2 2015, 14:20
- - _Pasha   я правильно перевел с птичьего языка на норм.? Код...   Oct 2 2015, 15:51
- - Rash   scifi, мне интересно, что вас задел этот volatile ...   Oct 2 2015, 20:09
- - _Pasha   Цитата(Rash @ Oct 2 2015, 23:09) По запис...   Oct 3 2015, 05:48


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

 


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


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