Нужна функция проверки памяти на сбои на С. Это просто, но есть ограничение - нужно обойтись без сравнения с эталонной областью. При этом нужна оптимизация по скорости - объем памяти = вся RAM. Я попытался сделать самое простое - записать значение, тут же считать, проверить - компилятор удалил проверку, считая ее всегда проходящейся. Подскажите, плз.
gilg я б это уже давно сделал, но... Функция будет вставлена в кроссплатформенную часть ядра freebsd. inline asm - это совсем на крайний случай.
Шибко умные эти компиляторы стали Такая идея: Код (Text): addr = BaseAddr; *addr = TestValue; for (; addr < EndAddr; ++addr) { if (*(addr-1) != TestValue) { break; } *addr = TestValue; } Visual с этой штукой не догадался ничего сотворить ) ЗЫ: Кстати, такая проверка ОП будет бессмысленной. Посмотри http://www.memtest86.com/#philo
Для таких случаев и придумали ключевое слово volatile. Сейчас точно уже не вспомню порядок слов в объявлении, но должно быть нечто из разряда: Код (Text): volatile unsigned long *p; или unsigned long volatile *p;
v_mirgorodsky Спасибо, посмотрю. Да, работает как надо. gilg Занятно. Но ведь это еще и побыстрее надо бы... И насчет ошибки - скорей всего у меня сбои конкретно в памяти...