· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.HEAP —› великая сила асма!=))

Посл.отвђт Сообщенiе


Дата: Сен 21, 2004 15:34:57

Помогал знакомому отлаживать програмку Билдере.
ну и там цикл и после 126 раз его выполнения возникает глюк=)
чтоб отловить этот глюк вставил такое:
if(число_циклов>125){
__asm{
nop//а тут поставил брекпоинт
};
};
Самое итересное, что после этого всё заработало!=))))
убрали вставку - опять всё испортилось, назад - опять всё работает!=)))))
Вот она - сила асма!=)))


Дата: Сен 21, 2004 16:16:18

Танцы с бубном тоже иногда помогают :)


Дата: Сен 21, 2004 17:16:43

ага, переменная небось была signed char и после 127 становилась отрицательной :) Смотри что компилер сгенерил в асмовом сорце. Бывает такое что оптимизатор неправвильно оптимизит - натыкался сам. А ассемблерная вставка просто по умолчанию отключает некоторые опции оптимизации.


Дата: Сен 21, 2004 17:51:52

неее...=) там небыло такого, я бы сразу заметил!=))
скорее второе=)) но всё равно было весело такое видеть=))


Дата: Сен 21, 2004 20:02:20

eXod
„чтоб отловить этот глюк вставил такое: “
Вставляют отладочную печать обычно, а отладчиком надо уметь пользоваться. Он и служит для отлавливания глюков, которые исчезают после изменения программы. Есть же там наверняка брейк со счетчиком.
И второе : если глюк был без отладчика, а с отладчиком
нет - тогда оптимизация понятно почему отключена :-)
Первая заповедь программиста : "Чудес, к сожалению, не бывает". Сколько раз уже убеждался, но все равно хочется верить .......


Дата: Сен 22, 2004 16:46:08

=)) можно было и так, только Билдер не является мой основной средой разработки, вот и проще мне было вставить такой код, чем смотреть как брекпоинт со счётчиком вставить=))
Мы специально проверили разные типы оптимизации(правда в Билдере их всего три - скорость,размер,нет).
А чудес не бывает,а жаль...
Но всё-равно весело было смотреть как с ноп'ом код начинает правильно работать!=) А вот времени разбараться почему так к сожалению нет=(


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.078