AlexBi (24.04.2009 18:24, просмотров: 247) ответил Alex B. на я именно ее и включил. естественно сама структура (а не только поле) так же объявлена как volatile. Никак не могу въехать, в чем проблема
Извиняюсь, объявление параметра как volatile я не заметил. Нет разницы между 'asm' и 'asm volatile'. Если сделать параметр volatile, то результат правильный. Можно даже сделать volatile временно, вот так:
if(f) { asm (" disi #0x3ff"); ((volatile struct SS *)ps)->f1=1; asm (" disi #0"); }
else { asm (" disi #0x3ff"); ((volatile struct SS *)ps)->f1=0; asm (" disi #0"); }
тогда тоже все получается. На этом варианте я и остановлюсь. Не хочется сильно урезать оптимизатор.
Еще лучше было бы написать на АСМ, но не знаю как работать со структурой ... :(