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

 
 
> Как отключить оптимизацию switch() ?
GetSmart
сообщение Jan 29 2012, 07:40
Сообщение #1


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Перепробовал все прагмы типа
#pragma optimize=high/medium/low size/balanced/speed no_cse no_unroll no_tbaa no_inline no_code_motion

Всё равно switch() оптимизирует и тратит из-за этого DPL,DPH & B в прерывании MCS-51.

Мне надо чтобы switch из четырёх элементов сделался как через if () ...

Ну неужели придётся делать ручками через if
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
GetSmart
сообщение Feb 11 2012, 03:29
Сообщение #2


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



А 8.10.4 тоже какие-то приколисты писали. Вобщем видны некоторые улучшения оптимизации. В конце функции вызов другой функции заменяется на LJMP func. Сброс двух битов в одной битовой переменной заменяется на ANL var,mask.

Но есть лишние операции, хоть и не искажающие работу проги. Как буд-то кто-то хотел обмануть, но не срослось sm.gif

До сих пор в отладчике переходы назад отображаются неправильно, на 1 байт ошибается в мнемонике. Хотя команда правильная и исполняется правильно.

Сообщение отредактировал GetSmart - Feb 11 2012, 04:48
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
Xenia
сообщение Feb 11 2012, 07:26
Сообщение #3


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(GetSmart @ Feb 11 2012, 07:29) *
А 8.10.4 тоже какие-то приколисты писали. Вобщем видны некоторые улучшения оптимизации.

А у вас какая оптимизация включена? По скорости или по размеру?

Кстати, версия 8.10.4 уже не последняя - вчера вышла 8.11.1. Вот только испытывать ее боюсь из-за новой системы лицензирования. Теперь инсталлятор раздают свободно (тута) и он даже пытается что-то инсталлировать, но чтобы компилить стало, надо регистрировать по интернету. Есть предупреждение, что новая и старая система лицензирования несовместимы на одном компе (ОСе?), вот и трушу проверять, опасаясь, что старые лицензии (на другие платформы) у меня слетят. Впрочем, ожидать заметных подвижек в качестве компиляции от новой версии не приходится, т.к., судя по описанию, смена способа лицензирования - единственное, чем она отличается от своей предшественницы.

Сама же тенденция улучшать качество кода с ростом номера версии довольно хорошо прослеживается. Да и со временем ошибки тоже пользователями выявляются и производителем исправляются. Вот только Startup-код постоянно растет...

Но если за собой знаешь ту болезнь, что постоянно лазишь в код, генерируемый компилятором, и переживаешь по всякому поводу (типа "я написала бы лучше"), то лучше на ассемблере так и оставаться, а на С не переходить - целее нервы будут sm.gif. Со мной тоже такое было, но со временем прошло.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- GetSmart   Как отключить оптимизацию switch() ?   Jan 29 2012, 07:40
- - Xenia   Цитата(GetSmart @ Jan 29 2012, 11:40) Мне...   Jan 29 2012, 08:03
|- - Палыч   Цитата(Xenia @ Jan 29 2012, 12:03) ...хот...   Jan 29 2012, 08:18
|- - _Pasha   Цитата(Xenia @ Jan 29 2012, 11:03) Впервы...   Jan 29 2012, 11:55
||- - GetSmart   Цитата(_Pasha @ Jan 29 2012, 16:55) Может...   Jan 29 2012, 12:00
|- - _Pasha   Вот ещё что: Цитата(Xenia @ Jan 29 2012, 11...   Jan 29 2012, 13:16
|- - GetSmart   Цитата(Xenia @ Jan 29 2012, 13:03) Впервы...   Feb 11 2012, 00:40
- - sonycman   Да и тот же IAR для ARM. Switch из 15 case компили...   Jan 29 2012, 08:24
- - GetSmart   Неужели в самом деле родители ИАРа решили, что их ...   Jan 29 2012, 08:40
- - GetSmart   Нда. Переделал на if-ы. Стало на 11 байт короче са...   Jan 29 2012, 10:15
- - _Pasha   Кейл огорчил.   Jan 29 2012, 12:09
- - GetSmart   Давно хотел спросить. Xenia, куда замылили ветку с...   Jan 29 2012, 13:23
|- - Xenia   Цитата(GetSmart @ Jan 29 2012, 17:23) Дав...   Jan 29 2012, 20:21
- - arttab   iar #pragma optimize=none   Jan 30 2012, 01:09
|- - GetSmart   Цитата(arttab @ Jan 30 2012, 06:09) iar #...   Jan 30 2012, 01:48
||- - _Pasha   Цитата(GetSmart @ Jan 30 2012, 05:48) Тих...   Jan 30 2012, 07:15
||- - xemul   Цитата(GetSmart @ Jan 30 2012, 05:48) Дел...   Jan 30 2012, 14:40
||- - GetSmart   Цитата(xemul @ Jan 30 2012, 19:40) За что...   Jan 30 2012, 15:01
|- - Dikoy   Цитата(arttab @ Jan 30 2012, 04:09) iar #...   Mar 5 2012, 20:27
|- - _Артём_   Цитата(Dikoy @ Mar 5 2012, 22:27) А как н...   Mar 5 2012, 22:56
- - scifi   Ну не знаю... Опускаться до таких извращений, чтоб...   Jan 30 2012, 13:05
|- - GetSmart   Цитата(scifi @ Jan 30 2012, 18:05) Ну не ...   Jan 30 2012, 13:47
- - GetSmart   Ужжасс. 7.60.1 ещё и глючный. По адресу 072C надо ...   Feb 10 2012, 07:27
- - GetSmart   Оптимизация у меня максимальная по размеру. Причём...   Feb 11 2012, 08:06
|- - Xenia   Цитата(GetSmart @ Feb 11 2012, 12:06) Кто...   Feb 11 2012, 08:21
|- - GetSmart   Цитата(Xenia @ Feb 11 2012, 13:21) Этот в...   Feb 11 2012, 08:29
- - Dikoy   Всё, разобрался.   Mar 5 2012, 22:54


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

 


RSS Текстовая версия Сейчас: 25th August 2025 - 04:46
Рейтинг@Mail.ru


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