Цитата(_artem_ @ May 27 2007, 02:03)

При декларировании переменной как регистровой (пример внизу)
__regvar __no_init unsigned char test;
присвоение ей какого либо значения в функции main()
void main(void)
{
test = 3;
for(;;)
;
}
игнорируется компайлером. Для решения проблемы инициализации можно создать отдельную функцию вызываемую из main() где эта инициализация и совершается. В этом случае присвоение происходит без проблем.
использую две версии 4.20 и с 4.21. Везьде одно и то же .
Интересно пропустил ли я что то из виду ?
Если включена оптимизация, то IAR игнорирует все, что не используется реально. В даном случае хотя и присваивается переменной test значение, но переменная потом нигде не используется. Достаточно совершить какое-либо "полезное" действие, хотя бы отослать test в один из SFR, чтобы увидеть результат.