-
- А добавить ассемблерной вставке в clobber-list память не пробовал? Такой memory barrier: ReAl(175 знак., 25.04.2009 01:34)
- Атомарности вот в таком вот смысле от компилятора НЕ ДОБИТЬСЯ ВООБЩЕ. Используй критические секции. volatile тоже в общем-то не обязан. - fk0(24.04.2009 13:38)
- disi это и есть разновидность критической секции, однако не помогает. Я согласен всю функцию на АСМ переписать, но не знаю как обратиться к биту из структуры на АСМ, без явного указания его смещения. - AlexBi(24.04.2009 15:47)
- Есть команды с косвенной адресацией бит - BSW/BTST - MBedder(25.04.2009 00:52)
- disi это и есть разновидность критической секции, однако не помогает. Я согласен всю функцию на АСМ переписать, но не знаю как обратиться к биту из структуры на АСМ, без явного указания его смещения. - AlexBi(24.04.2009 15:47)
- Не понял. Почему не получилось?
Все правильно он сделал.понял. Volatile не помогает? - Alex B.(24.04.2009 12:45)- volatile для f1 помогает, но как-то не уверенно. - AlexBi(24.04.2009 15:44)
- ну низнаю. ничего неуверенного не вижу: Alex B.(1841 знак., 24.04.2009 17:01)
- Включи оптимизацию -Os (именно ее) и оба твоих варианта станут неправильными. AlexBi(102 знак., 24.04.2009 17:56)
- я именно ее и включил. естественно сама структура (а не только поле) так же объявлена как volatile. Никак не могу въехать, в чем проблема Alex B.(86 знак., 24.04.2009 18:08)
- Извиняюсь, объявление параметра как volatile я не заметил. AlexBi(518 знак., 24.04.2009 18:24)
- Смещение бита можно вычислить, но это крайний случай. Мне как-то понадобилось в асм'е работать с битами из структуры (я код старался максимально ужать по скорости). testerplus(793 знак., 24.04.2009 20:05)
- так как ASM30 можно пропустить через препроцессор C, то я думаю, что выручит offsetof(). Хотя я бы с ASM в данном случае не связывался - компилер и так неплохо работает. Alex B.(103 знак., 24.04.2009 18:32)
- Извиняюсь, объявление параметра как volatile я не заметил. AlexBi(518 знак., 24.04.2009 18:24)
- я именно ее и включил. естественно сама структура (а не только поле) так же объявлена как volatile. Никак не могу въехать, в чем проблема Alex B.(86 знак., 24.04.2009 18:08)
- Включи оптимизацию -Os (именно ее) и оба твоих варианта станут неправильными. AlexBi(102 знак., 24.04.2009 17:56)
- что значит не уверенно? а volatile для асмовой вставки пробовал? он вполне может inline асм оптимизировать Alex B.(249 знак., 24.04.2009 16:00)
- Добавление nop после disi особо не влияет, все равно он чтение выносит за рамки disi. - AlexBi(24.04.2009 16:49)
- это значит, что ему стремно - боицца, что при других настройках оптимизации и кодоокружении результат будет неатомарным. - jaga-jaga(24.04.2009 16:00)
- ну значит он на этом уровне оптимизации трогает асмовые вставки. Надо их волатайлить, либо смотреть ключи компилятора и отключать конкретную оптимизацию. - Alex B.(24.04.2009 16:01)
- volatile к asm ни чего не меняет, результат тот же. Отключать оптимизацию не хочется, это на крайний случай. - AlexBi(24.04.2009 16:45)
- я имел в виду не всю оптимизацию, а ключ поискать, который за оптимизацию асмовых вставок отвечает - Alex B.(24.04.2009 17:04)
- volatile к asm ни чего не меняет, результат тот же. Отключать оптимизацию не хочется, это на крайний случай. - AlexBi(24.04.2009 16:45)
- ну значит он на этом уровне оптимизации трогает асмовые вставки. Надо их волатайлить, либо смотреть ключи компилятора и отключать конкретную оптимизацию. - Alex B.(24.04.2009 16:01)
- ну низнаю. ничего неуверенного не вижу: Alex B.(1841 знак., 24.04.2009 17:01)
- volatile для f1 помогает, но как-то не уверенно. - AlexBi(24.04.2009 15:44)
- volatile? - jaga-jaga(24.04.2009 12:41)
- да и сделал-то он то, что его попросили. а если делать disi перед if? - jaga-jaga(24.04.2009 12:43)
- disi перед if - безрезультатно AlexBi(282 знак., 24.04.2009 15:42)
- да и сделал-то он то, что его попросили. а если делать disi перед if? - jaga-jaga(24.04.2009 12:43)