Отговори на тема  [ 8 мнения ] 
Интересна заигравка с цикъл. 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение Интересна заигравка с цикъл.
Оптимизирам си една библиотека и рекох да приведа в по човешки вид това но ми стана интересно кво е сътворил IAR като асемблер

Код:
do
    {
        if ( i2cMasterSendNI(i2cAddr, 2, packet,NO_STOP_COND)     == I2C_OK )
            if ( i2cSentDevAddr( i2cAddr | 0x01,0,TW_MR_SLA_ACK ) == I2C_OK ) break;
        i2ceeprom_DEV_ERR();
    } while(0);


учудих се че на най ниското ниво на оптимизация е компилирано много правилно като проверка а не като цикъл и няма смисъл да го пипам изобщо. Някой има ли наблюдение как се компилират подобни извращения с циклите в други среди?


Чет Авг 24, 2006 6:22 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
е тука просто няма цикъл ;-)

почти всики компилатори изяждат всякакви константни изрази и проверка на константи.
Само за GCC не съм сигурен, щото на него като му изключиш оптимизациите може всичко да очакваш ;-)


Чет Авг 24, 2006 8:12 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
На големите нива на оптимизация компилатора задължително трябва да го компилира без цикъла но ми стана интересно че на най ниско на което обикновенно и се дебъгва в IAR e изключен цикъла.


Чет Авг 24, 2006 8:17 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 12, 2004 3:38 pm
Мнения: 9103
Местоположение: Chicago, IL
Мнение 
Nikola Kirov написа:
най ниско на което обикновенно и се дебъгва в IAR

Това е интересно. Я кажи защо така дебъгваш, защото аз със IAR специално винаги съм дебъгвал на full оптимизация.


Чет Авг 24, 2006 8:49 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
И как дебъгваш на full оптимизация. То кода който се генерира тогава е толкова раздробен в някой участъци е изключен даже. Как дебъгваш? Маркера за стъпките скача като побъркан от място на място :)
Даже за понякога изключвам изобщо оптимизацията че да имам видимост за всички локални променливи. Иначе в зависимост от конкретния случай може и да не виждаш стойноста на някоя. Най вече в случаите когато до края на функцията не се ползва. Но като трябва да видиш стойноста и след последната операция с нея е неприоятно. Изключването на оптимизацията изобщо решава проблема. Поне при AVR ската версия.


Чет Авг 24, 2006 8:58 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 12, 2004 3:38 pm
Мнения: 9103
Местоположение: Chicago, IL
Мнение 
Много рядко се е случвало при MSP430 - а го държахме на пълна оптимизация, защото се борехме за всеки байт програмна памет. Аз мислих, че някаква друга ти е идеята, но за променливите си прав.


Чет Авг 24, 2006 9:04 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Ами опримизацията може да се задава отделно за всеки фаил от проекта. Даже с #pragma някаква може да се изключва оптимизацията локално за участък от кода даже. Така че не пречи за фаила с който работиш в момента да я изключиш и да си дебъгваш спокойно


Чет Авг 24, 2006 9:10 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 12, 2004 3:38 pm
Мнения: 9103
Местоположение: Chicago, IL
Мнение 
Абе човек - оставаха ни от 3 до 20-на свободни байта в програмната памет. Каквото и да изключа - все надхвърляше 8) . Ако трябваше да добавим нещо - преди това 3 дена оптимизирахме кода :? .


Чет Авг 24, 2006 9:13 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 8 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 6 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни