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

 
 
> Инкремент указателя и оптимизация
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
 
Start new topic
Ответов
Rash
сообщение Oct 1 2015, 19:09
Сообщение #2


Знающий
****

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



Цитата(scifi @ Oct 1 2015, 21:13) *
Жалоба только на то, что код в окне дизассемблера выглядит не так, как хотелось бы? Или реально программа работает не так, как задумано?


Программа работает как задумано, без оптимизации или при добавлении 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
|- - 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 Текстовая версия Сейчас: 29th July 2025 - 19:24
Рейтинг@Mail.ru


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