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

 
 
> новая проблема Оптимизация компилятора IAR
Alex ma
сообщение Mar 21 2007, 20:03
Сообщение #1


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

Группа: Новичок
Сообщений: 81
Регистрация: 9-08-06
Пользователь №: 19 445



Есть глобальная структура с 4 переменными которые используются во функции MiDI
По адресу 01F4.

Есть функция:
void MiDI(void){
while(1){
здесь код.
ret //выход
};
};

Данная функция вызывается из другого места по указателю на нее.
Выполнив нужные действия выходим из нее, потом возвращаемся обратно, при минимальной оптимизации все нормально вот асм:
4: void MiDI (void){
+000005EF: C020 RJMP PC+0x0021 Relative jump

Но стоит повысить оптимизацию так вот получается вот что асм
4: void MiDI (void){
+00000444: 93BA ST -Y,R27 Store indirect and predecrement
+00000445: 93AA ST -Y,R26 Store indirect and predecrement
+00000446: EFA4 LDI R26,0xF4 Load immediate
+00000447: E0B1 LDI R27,0x01 Load immediate
+00000448: C020 RJMP PC+0x0021 Relative jump

СОХРАНЯЕТ В СТЕКЕ ДАННЫХ регистры R27, R26!
Он думает цикл бесконечный а, я выхожу из него ! по ret (макрос), и происходит потеря данных, ведь я не восстанавливаю из стека данных.
Как компилятор отучить делать вот так
+00000444: 93BA ST -Y,R27 Store indirect and predecrement
+00000445: 93AA ST -Y,R26 Store indirect and predecrement
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Alex ma   новая проблема Оптимизация компилятора IAR   Mar 21 2007, 20:03
- - rezident   Попробуйте выходить по break, а ret поставить посл...   Mar 21 2007, 20:21
|- - Alex ma   Цитата(rezident @ Mar 21 2007, 22:21) Поп...   Mar 21 2007, 21:14
- - IgorKossak   Каков смысл городить ret (макрос), если стандартно...   Mar 22 2007, 12:45
|- - Alex ma   Цитата(IgorKossak @ Mar 22 2007, 14:45) К...   Mar 22 2007, 19:04
|- - rezident   Цитата(Alex ma @ Mar 22 2007, 21:04) Erro...   Mar 22 2007, 19:28
|- - singlskv   Цитата(Alex ma @ Mar 22 2007, 19:04) Erro...   Mar 23 2007, 00:17
|- - zltigo   Цитата(singlskv @ Mar 22 2007, 23:17) при...   Mar 23 2007, 00:50
|- - singlskv   Цитата(zltigo @ Mar 23 2007, 00:50) Легко...   Mar 23 2007, 01:26
|- - zltigo   Цитата(singlskv @ Mar 23 2007, 00:26) got...   Mar 23 2007, 09:07
||- - singlskv   Цитата(zltigo @ Mar 23 2007, 09:07) А ret...   Mar 24 2007, 01:06
||- - xemul   Цитата(singlskv @ Mar 24 2007, 01:06) Хор...   Mar 24 2007, 11:29
||- - zltigo   Цитата(singlskv @ Mar 24 2007, 00:06) а е...   Mar 24 2007, 12:32
||- - singlskv   Цитата(zltigo @ Mar 24 2007, 12:32) 1.Доб...   Mar 24 2007, 12:38
||- - zltigo   Цитата(singlskv @ Mar 24 2007, 11:38) ......   Mar 24 2007, 12:59
|- - Rst7   Цитата(singlskv @ Mar 23 2007, 00:26) got...   Mar 23 2007, 09:11
- - _Bill   Цитата(Alex ma @ Mar 21 2007, 20:03) Есть...   Mar 23 2007, 13:25
- - Rst7   Цитата12 или 22 байта ?а если будут множественное ...   Mar 24 2007, 10:33


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

 


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


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