ส็็็็็็็็็็็็็็็็็็็็็็็็็༼ ຈل͜ຈ༽ส้้้้้้้้้้้้้้้้้้้้้้้
- 
	- это похоже самая беда у IAR`а - периодическая выдача нерабочего кода на максимальных уровнях оптимизации. - Mahagam(11.05.2011 15:39)
			- Это всеобщая беда. PIC-овые компиляторы особливо приучали к отказу от сложных выражений в одной строке. - ASDFS(11.05.2011 15:55)
- ну в 90% случаев при внимательном разборе виноват сам программист: компилятору ещё нужно уметь объяснить, что можно оптимизировать  koyodza(304 знак., 11.05.2011 15:45)
					- Оно да, но если он выкидывает кусок кода - предупреждение бы не помешало. А volatile тоже та еще штука, требуестя в одном-двух местах, а не оптимизируется во всем коде, приходится в другие переменные перекидывать. Вот бы директивой её сделали,  Kit(52 знак., 11.05.2011 17:02)
							- предупреждения, когда выкидывается кусок кода, можно использовать только когда программа из десяти строк :=)  koyodza(158 знак., 11.05.2011 23:42)
									- Не вижу связи с размером. Если действие в программе написано, а в код не пошло, тут по-моему однозначно что-то не так. Причем не соптимизировалось, а именно совсем не пошло. От этой функции, например, останется только return:  Kit(114 знак., 12.05.2011 00:35)
											- связь с размером в том, что в проекте даже на пару тысяч строк варнинг о выбрасывании куска просто сведёт с ума - koyodza(12.05.2011 16:20)
- Такое весьма часто случается при использовании сравнительно универсальных #define и констант при их вызове AlexBi(65 знак., 12.05.2011 09:59)
- Какая ужасная функция. Я бы её тоже заоптимизировал в ноль. И штраф автору назначил, с отбыванием в колонии строгого режима :-) Смотреть надо не на код, а на результат выполнения программы. - SciFi(12.05.2011 00:38)
													- А если это получилось в результате ошибки, тоже в колонию?:) - Kit(12.05.2011 01:03)
															- В результате какой ошибки? Что хотелось сделать то? - Vladimir Ljaschko(12.05.2011 09:37)
 
 
- А если это получилось в результате ошибки, тоже в колонию?:) - Kit(12.05.2011 01:03)
															
 
 
- Не вижу связи с размером. Если действие в программе написано, а в код не пошло, тут по-моему однозначно что-то не так. Причем не соптимизировалось, а именно совсем не пошло. От этой функции, например, останется только return:  Kit(114 знак., 12.05.2011 00:35)
											
- А не утоните в предупреждениях? Завели временную переменную, а компилятор ее выбросил - получи предупреждение. И как вы представляете себе volatile директивой?  Cepгeй Бopщ(114 знак., 11.05.2011 17:10)
									- Да, оптимизатор иногда задалбывает вместе с предупреждениями. Особенно "любимая" ситуация - нужно прочитать регистр периферии "в никуда". И начинается... То просто предупреждение, что переменная не используется после присвоения, то еще хуже - vmp(181 знак., 12.05.2011 17:39)
- Я написал "кусок кода", очевидно, что на a=b предупреждений дывать не надо. У меня и написано, что "приходится в другие переменные перекидывать", только это неудобно. А директиву я себе представляю очень просто:  Kit(72 знак., 11.05.2011 22:34)
											- То есть, в этом месте переменная XXX может быть изменена вне данного кода а в других местах такое не возможно? - Vallav(12.05.2011 08:32)
													- Именно так - Kit(12.05.2011 12:31)
															- Возможно, что-то такое может сработать: SciFi(163 знак., 12.05.2011 15:05)
- Так чем вариант не устраивает - ввести временную переменную там, где нужна оптимизированная обработка значения XXX, Vallav(398 знак., 12.05.2011 14:56)
 
 
- Именно так - Kit(12.05.2011 12:31)
															
- Замечательно. И будет оно читать ячейку XXX до потери сознания, ибо в том месте, где XXX надо было записать вы обрамить забудите. Cepгeй Бopщ(298 знак., 12.05.2011 02:26)
- лучше временными переменными оперировать поактивнее  koyodza(254 знак., 11.05.2011 23:00)
													- И как у Вас xx может измениться вне данного кода во время исполнения while? - Vallav(12.05.2011 08:37)
															- В обработчике прерывания - Kit(12.05.2011 12:33)
																	- А адрес xx обработчик прерывания как узнает? Vallav(113 знак., 12.05.2011 14:46)
 
 
- В обработчике прерывания - Kit(12.05.2011 12:33)
																	
- в данном случае xx - локальная и смысла в volatile не вижу. Хотя вот volatile int *xx=&x, может и интересно, надо подумать.  Kit(39 знак., 11.05.2011 23:26)
															- смысл локальной volatile в том, что доступ к ней не будет оптимизироваться  koyodza(180 знак., 11.05.2011 23:38)
																	- Это понятно, только зачем бы оно могло понадобиться, чтобы кусок кода не снесло? Так IAR на это уже не ведётся:)   Kit(435 знак., 12.05.2011 00:39)
																			- "Можно пользоваться временными переменными, но неудобно" - ага, а прагмы в тех же местах лепить по две удобнее. - Cepгeй Бopщ(12.05.2011 02:29)
- while отличается от for тем, что кроме while() может быть еще и do {...} while(); - rezident(12.05.2011 00:43)
																					- Так и думал, что напомните:)  Kit(70 знак., 12.05.2011 00:53)
																							- А зачем выдумывать лишние сущности? for всегда с пред-проверкой условия. Так в стандарте C99 указано.   rezident(165 знак., 12.05.2011 01:14 - 01:17)
																									- Это гипотетически:) Kit(219 знак., 12.05.2011 02:41)
 
 
- А зачем выдумывать лишние сущности? for всегда с пред-проверкой условия. Так в стандарте C99 указано.   rezident(165 знак., 12.05.2011 01:14 - 01:17)
																									
 
- Так и думал, что напомните:)  Kit(70 знак., 12.05.2011 00:53)
																							
 
 
- Это понятно, только зачем бы оно могло понадобиться, чтобы кусок кода не снесло? Так IAR на это уже не ведётся:)   Kit(435 знак., 12.05.2011 00:39)
																			
 
- смысл локальной volatile в том, что доступ к ней не будет оптимизироваться  koyodza(180 знак., 11.05.2011 23:38)
																	
 
- И как у Вас xx может измениться вне данного кода во время исполнения while? - Vallav(12.05.2011 08:37)
															
- Вообще-то в том же IAR есть #pragma optimize=[goal][level][no_optimization...] - rezident(11.05.2011 22:47)
													- Я в курсе, но полностью отключить оптимизацию куску кода для того, чтобы одна переменная вела себя правильно, это совсем не то, чего хотелось бы. - Kit(11.05.2011 23:00)
															- Язык программирования отличается от человеческих языков только тем, что результатом компиляции с него является машинный код для процессора. Но, как и в случае общения между людьми, компилятору иногда тоже нужны дополнительные пояснения: что именно  rezident(114 знак., 11.05.2011 23:07)
																	- Не вижу, где-бы это я противоречил столь очевидной истине. Я только говорю, что слов для объяснения не хватает:) - Kit(11.05.2011 23:28)
																			- возможно, Вы просто не все слова выучили ;=)  koyodza(99 знак., 11.05.2011 23:39)
																					- Возможно:) - Kit(12.05.2011 01:02)
 
 
- возможно, Вы просто не все слова выучили ;=)  koyodza(99 знак., 11.05.2011 23:39)
																					
 
- Не вижу, где-бы это я противоречил столь очевидной истине. Я только говорю, что слов для объяснения не хватает:) - Kit(11.05.2011 23:28)
																			
 
- Язык программирования отличается от человеческих языков только тем, что результатом компиляции с него является машинный код для процессора. Но, как и в случае общения между людьми, компилятору иногда тоже нужны дополнительные пояснения: что именно  rezident(114 знак., 11.05.2011 23:07)
																	
 
- Я в курсе, но полностью отключить оптимизацию куску кода для того, чтобы одна переменная вела себя правильно, это совсем не то, чего хотелось бы. - Kit(11.05.2011 23:00)
															
 
- То есть, в этом месте переменная XXX может быть изменена вне данного кода а в других местах такое не возможно? - Vallav(12.05.2011 08:32)
													
- +1. Я так и делаю. Кстати, такой способ позволяет наоборот избежать "лишних" предупреждений в том случае, когда в операции используются больше одной volatile-переменных. При использовании двух или большего количества volatile, например, в rezident(105 знак., 11.05.2011 17:24)
 
 
- предупреждения, когда выкидывается кусок кода, можно использовать только когда программа из десяти строк :=)  koyodza(158 знак., 11.05.2011 23:42)
									
- какбы да. но все равно - IAR лидирует по отказам кода. не раз было, что GCC собирает работоспособный код под любой оптимизацией, что по размеру что по скорости, а ИАР на этом же исходнике на максимуме генерит мертвечинку.  Mahagam(160 знак., 11.05.2011 15:58)
							- Просто этот ваш md5 написан финскими студентами. Нормальный проприеритарный код (где по одной операции на строчку) IAR компилирует нормально. - fk0(11.05.2011 16:05)
									- Какие-то странные финские студенты: RSA Data Security, Inc. Created 1991. - SciFi(11.05.2011 16:55)
- То есть сразу признаёмся что парсер исходников у ИАРа - какашка? ))) - Mahagam(11.05.2011 16:06)
 
 
- Просто этот ваш md5 написан финскими студентами. Нормальный проприеритарный код (где по одной операции на строчку) IAR компилирует нормально. - fk0(11.05.2011 16:05)
									
 
- Оно да, но если он выкидывает кусок кода - предупреждение бы не помешало. А volatile тоже та еще штука, требуестя в одном-двух местах, а не оптимизируется во всем коде, приходится в другие переменные перекидывать. Вот бы директивой её сделали,  Kit(52 знак., 11.05.2011 17:02)
							
 
- напоминает анекдот про машинисток :=) koyodza(181 знак., 11.05.2011 15:21 - 15:23)
 
- это похоже самая беда у IAR`а - периодическая выдача нерабочего кода на максимальных уровнях оптимизации. - Mahagam(11.05.2011 15:39)