Цитата(LeoLabs @ May 18 2005, 11:09)
И первый вопрос: - я организовал массив в СИ, с начальным адресом 0х100 и длиной 256 - чар : "__no_init unsigned char MyBuffer [256]@0x100;" - идея сделать кольцевой буффер, для простой работой с указателями (простой инкремент младшего байта указателя), с ним я работаю как в СИ, так и в ассемблере. ?? - как сделать инкремент младшего байта указателя в СИ? и вообще работать только с младшим байтом?
IAR бывает для очень разных платформ. И тонкие отличия на уровне расширений там разные. Например, в варианте для AVR есть волшебное слово __flash, которого нет в варианте, например, для MSP430, т.к. последний является фон Нейманом, у него стандартное слово const рулит.
Если Вам надо работать только с объектами в младших 8 адресах, то для этого у IAR'а есть специальное волшебное слово __tiny. Т.е. если объявить объект с таким словом, то и размещаться он будет в сегменте TINY_X (X - в зависимости от того, имеет ли объект инициализатор). И указатель для работы с такими объектами тоже надо объявлять соответствующий. И он будет сразу 8-битным, т.е. никакого старшего байта там нет. Например:
Код
__tiny bool flag;
...
__tiny bool *pFlag = &flag;
...
if(...) *pFlag = true;
Вся арифметика адресов тут 8-битная. За привильность синтаксиса не ручаюсь, давно уже этим не баловался. А проверять лень.
«Отыщи всему начало, и ты многое поймёшь» К. Прутков