- 
	- ну если я пишу через MOV.B, что будет со второй половиной слова? - Алехин Александр(18.11.2009 08:20)
			- А ничего не будет - запишется байт. По крайней мере у меня в загрузчике это работает:  Гудвин(177 знак., 18.11.2009 08:31)
					- Интересно все-таки адресная арифметика работает.  Алехин Александр(1043 знак., 18.11.2009 08:42)
							- Ндык определить сразу pData, как указатель на слово и все пучком будет... - Гудвин(18.11.2009 08:46)
									- да нет, просто случайно листинг посомотрел, и увидел, что указатели не правильно инкрементируются. Сразу вопрос возник - что я делаю не так? - Алехин Александр(18.11.2009 08:53)
											- Указатель инкрементируется на размер объекта на который он указывает. - rezident(18.11.2009 09:01)
													- конечно, именно этого я и ожидал! т.е. по моим представлениям "(WORD *)ptr++" должен увеличивать ptr на 2 - Алехин Александр(18.11.2009 09:03)
															- Память то побайтно адресуемая? Значит на 2 байта указатель на WORD должен увеличиваться, или в этом случае преобразование типов не должно работать? - Алехин Александр(18.11.2009 09:05)
																	- ИМХО *((WORD *)pFlash++) указатель приводится к типу WORD только при извлечении данных. При операции инкремента значения указателя его тип не меняется. Это косвенно и подтверждается вторым вашим опытом с доп. количеством скобок *(((WORD *)pFlash)++) на  rezident(264 знак., 18.11.2009 09:25)
																			- надо попробовать изначально указатель как void * объявить. Может из void, где типы в любом случае надо приводить, он будет обращать внимание на размер объекта.  Алехин Александр(371 знак., 18.11.2009 09:36)
																					- Ёлки, да что тут непонятного? Выражение разбирается сначала вправо, затем влево (учитывая скобки ессно). СНАЧАЛА компилятор видит что указатель инкрементируется, а ЗАТЕМ приведение типов. То, что инкремент работает ПОСЛЕ - уже не важно. Точно  =AlexD=(62 знак., 18.11.2009 09:58)
																							- какого тогда не работает с доп.скобками ((WORD *)ptr)++? Здесь скобки однозначно определяют последовательность? - Алехин Александр(18.11.2009 10:01)
																									- Или косяк компилятора, или где-то не то смотришь. - =AlexD=(18.11.2009 10:03)
																											- expression must be a modifiable lvalue - Алехин Александр(18.11.2009 10:06)
 
 
- Или косяк компилятора, или где-то не то смотришь. - =AlexD=(18.11.2009 10:03)
																											
 
- какого тогда не работает с доп.скобками ((WORD *)ptr)++? Здесь скобки однозначно определяют последовательность? - Алехин Александр(18.11.2009 10:01)
																									
 
- Ёлки, да что тут непонятного? Выражение разбирается сначала вправо, затем влево (учитывая скобки ессно). СНАЧАЛА компилятор видит что указатель инкрементируется, а ЗАТЕМ приведение типов. То, что инкремент работает ПОСЛЕ - уже не важно. Точно  =AlexD=(62 знак., 18.11.2009 09:58)
																							
- И вообще, я когда-то тоже сталкивался с проблемами подобными вашим, но "забил" на них и просто пишу во Flash байтами. - rezident(18.11.2009 09:28)
																					- У меня тоже и так все работало, писал побайтно и не заморачивался.  Алехин Александр(614 знак., 18.11.2009 09:54)
																							- Дык так всегда и делал - дописывал лог. И быстрее, и ресурс флэш экономит. - Гудвин(18.11.2009 10:11)
 
 
- У меня тоже и так все работало, писал побайтно и не заморачивался.  Алехин Александр(614 знак., 18.11.2009 09:54)
																							
 
- надо попробовать изначально указатель как void * объявить. Может из void, где типы в любом случае надо приводить, он будет обращать внимание на размер объекта.  Алехин Александр(371 знак., 18.11.2009 09:36)
																					
 
- ИМХО *((WORD *)pFlash++) указатель приводится к типу WORD только при извлечении данных. При операции инкремента значения указателя его тип не меняется. Это косвенно и подтверждается вторым вашим опытом с доп. количеством скобок *(((WORD *)pFlash)++) на  rezident(264 знак., 18.11.2009 09:25)
																			
 
- Память то побайтно адресуемая? Значит на 2 байта указатель на WORD должен увеличиваться, или в этом случае преобразование типов не должно работать? - Алехин Александр(18.11.2009 09:05)
																	
 
- конечно, именно этого я и ожидал! т.е. по моим представлениям "(WORD *)ptr++" должен увеличивать ptr на 2 - Алехин Александр(18.11.2009 09:03)
															
- В MSP надо следить за выравниванием данных (в структурах, например). Компилятор выравнивает на границу одного 16 бит. слова, если байтовое данное "не так" лежит... - Гудвин(18.11.2009 09:00)
 
- Указатель инкрементируется на размер объекта на который он указывает. - rezident(18.11.2009 09:01)
													
 
- да нет, просто случайно листинг посомотрел, и увидел, что указатели не правильно инкрементируются. Сразу вопрос возник - что я делаю не так? - Алехин Александр(18.11.2009 08:53)
											
 
- Ндык определить сразу pData, как указатель на слово и все пучком будет... - Гудвин(18.11.2009 08:46)
									
 
- Интересно все-таки адресная арифметика работает.  Алехин Александр(1043 знак., 18.11.2009 08:42)
							
- ничего не будет - Shura(18.11.2009 08:23)
 
- А ничего не будет - запишется байт. По крайней мере у меня в загрузчике это работает:  Гудвин(177 знак., 18.11.2009 08:31)
					
 
- ну если я пишу через MOV.B, что будет со второй половиной слова? - Алехин Александр(18.11.2009 08:20)