|
|
 |
Ответов
|
Jan 20 2012, 09:27
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Promotion можно не выполнять (удалять в процессе оптимизации) только тогда, когда observable behavior не изменяется. Т.е. если результат у «абстрактной машины», которая медленно и печально делает все строго по стандарту, и у реального кода не отличается. В случае присваивания c3 = c1 + c2; результат (содержимое c3, которое будет из него прочитано следующими операторами) с promotion и без оного не отличается, это известно заранее, поэтому можно и не делать. В случае if ( а тут вычисления ) — не так. Поэтом делать обязательно. Ну и на закуску — этот пример на codepad (там можно набирать любой код, жать кнопку submit и смотреть результат компиляции и выполнения) avr-gcc иногда страдает недовыбрасыванием promotion при оптимизации. Как я недавно где-то писал — пусть лучше так, чем он мне что-то не пос тандарту сделает, а я буду сидеть и думать в чём дело. Цитата(ARV @ Jan 20 2012, 11:15)  если выражение справа вычислять отдельно, то ... в то время как в первом случае promotion делается так же для обоих сторон выражения, но при этом слева к переменной приписывается 0 в старший байт, а справа - старший байт ВЫЧИСЛЯЕТСЯ. Именно так. На мой взгляд, IAR перестарался с оптимизацией. Так таки всё нормально? Это кто-то где-то недоразобравшись бочку покатил?
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Jan 20 2012, 09:29
|

Профессионал
    
Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581

|
Цитата(ReAl @ Jan 20 2012, 13:17)  Ну и на закуску — этот пример на codepad (там можно набирать любой код, жать кнопку submit и смотреть результат компиляции и выполнения) а доверять такой проверке можно ВСЕГДА? то есть там механизм строко по стандарту делает просчет? кстати, ReAl, если не затруднит, еще один вопрос по стандарту... что стандарт говорит по поводу порядка вычисления выражения? имеем выражение вида A # B # C # D, где A,B,C и D - любые допустимые выражения, а # - любые допустимые операции/операторы с одинаковым приоритетом. что стандарт говорит по поводу порядка вычисления A,B,C и D? или даже чуть иначе: в выражении Код (A # B) == (C # D) определена очередность выражения слева и справа, а так же что будет "первее" вычислено: A или B (С или D) ?
--------------------
Я бы взял частями... но мне надо сразу.
|
|
|
|
Сообщений в этой теме
ARV IAR: вопрос типа "глазам не верю" Jan 20 2012, 07:08 MrYuran Цитата(ARV @ Jan 20 2012, 11:08) Неужели ... Jan 20 2012, 07:12 ARV ну потому, что как бы 1 должно выводиться... WinAV... Jan 20 2012, 07:13 arttab ff это 255 т.е. максимальное значение. 255 + 1 = 0... Jan 20 2012, 07:27 ARV а как же быть с тем, что по стандарту языка Си в в... Jan 20 2012, 07:39 MrYuran Цитата(ARV @ Jan 20 2012, 11:39) а как же... Jan 20 2012, 07:48 ARV я не супер-знаток стандарта, и тем более его пункт... Jan 20 2012, 07:59 MrYuran Цитата(ARV @ Jan 20 2012, 11:59) я не суп... Jan 20 2012, 08:14  ARV Цитата(MrYuran @ Jan 20 2012, 12:14) Ну в... Jan 20 2012, 08:21 Сергей Борщ QUOTE (ARV @ Jan 20 2012, 09:59) собствен... Jan 20 2012, 08:22  Палыч Цитата(Сергей Борщ @ Jan 20 2012, 12:22) ... Jan 20 2012, 08:34 Genadi Zawidowski Цитата(ARV @ Jan 20 2012, 11:59) но точно... Jan 20 2012, 16:28 sparcmaster Цитата из Шилдта:
ЦитатаПреобразования типов в выр... Jan 20 2012, 08:22 ARV ну, если я рассуждаю верно - это меня сильно успок... Jan 20 2012, 08:31 ARV ваша цитата четко подтверждает 2 вещи:
1. int prom... Jan 20 2012, 08:49 Палыч Цитата(ARV @ Jan 20 2012, 12:49) для вари... Jan 20 2012, 09:06 ARV лично я совсем не усматриваю того, что вы.
если в... Jan 20 2012, 09:15 Палыч Цитата(ARV @ Jan 20 2012, 13:15) лично я ... Jan 20 2012, 09:34  ReAl Цитата(Палыч @ Jan 20 2012, 11:34) Может ... Jan 20 2012, 09:48 demiurg_spb OFF:Не понимаю, почему народ не пишет
КодPORTB = ... Jan 20 2012, 09:17  ReAl Цитата(ARV @ Jan 20 2012, 11:29) а доверя... Jan 20 2012, 09:59   ARV Цитата(ReAl @ Jan 20 2012, 13:59) p.s. ид... Jan 20 2012, 10:06 _Ivana Насколько я ничего не знаю в стандарте С, то тут и... Jan 20 2012, 09:27 ReAl Цитата(_Ivana @ Jan 20 2012, 11:27) Наско... Jan 20 2012, 09:39 Idle предлагаю, наконец, _проверить_ в IAR Jan 20 2012, 09:38 Rst7 QUOTE наткнулся на тему на другом форуме - говорят... Jan 20 2012, 09:40 ARV Цитата(Rst7 @ Jan 20 2012, 13:40) А прове... Jan 20 2012, 09:48 sonycman Прогнал этот код в IAR 6.30.4 для ARM:
Код volatil... Jan 20 2012, 09:41 Rst7 QUOTE Прогнал этот код в IAR 6.30.4 для ARM:
Ну в... Jan 20 2012, 09:44 ARV Цитата(Rst7 @ Jan 20 2012, 13:44) Ну вооб... Jan 20 2012, 09:51 sonycman Цитата(Rst7 @ Jan 20 2012, 13:44) Это Вам... Jan 20 2012, 09:53 Rst7 QUOTE я не использую IAR по религиозным принципам
... Jan 20 2012, 10:06 ARV Цитата(Rst7 @ Jan 20 2012, 14:06) Тогда, ... Jan 20 2012, 10:10 sonycman Цитата(Rst7 @ Jan 20 2012, 14:06) Версия ... Jan 20 2012, 10:17 _Ivana ReAl, спасибо за наводку, попозже внимательно прош... Jan 20 2012, 10:06 Rst7 QUOTE я надеялся, что Си в любом компиляторе одина... Jan 20 2012, 10:09 Rst7 QUOTE а тут - такое...
Какое - такое? Сами Вы про... Jan 20 2012, 10:13 ARV Цитата(Rst7 @ Jan 20 2012, 14:13) Какое -... Jan 20 2012, 10:19 zombi off
Хотите чтоб всё работало правильно п... Jan 20 2012, 23:03 _Артём_ Цитата(zombi @ Jan 21 2012, 01:03) off ... Jan 21 2012, 01:24  zombi Цитата(_Артём_ @ Jan 21 2012, 05:24) ...
... Jan 21 2012, 07:05
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|