Главная Макинтош Регистрация

Вход

Приветствую Вас Гость | RSSСуббота, 18.11.2017, 22:36
Наш опрос
Оцените мой сайт
Всего ответов: 3

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа


Главная » 2013 » Октябрь » 8 » Ассемблер строить и жить помогает
11:16
Ассемблер строить и жить помогает
Была для одного проекта написана Dll на Watcom C. Версию уже не скажу - было достаточно давно - просто не помню - да для этого сообщества и не так уж важно. Но общая суть в следующем. В какой-то момент замечаем, что иногда результат работы не такой, какой ожидается. Гонялся я за этой ошибкой долго. Причём как оказалось увидеть её можно было только если уже готовую Dll'ку дизассемблировать и посмотреть глазками. Где-то в расчётах использовалась структура (причём без наворотов - самая простая). Ну и значит в какой-то момент в эту структура заносятся данные, примерно так: st.Num1 = dwNum1; st.Num2 = dwNum2; st.Num3 = dwNum3; st.Num4 = dwNum4;Так вот: первые три присваивания отрабатываются, а четвёртое - нет! Этой строки просто не оказывается в результирующем коде. Если б не знание ассемблера, то даже не знаю как долго бы искал эту ошибку. Причём если после каждой строки выводить, что в структуру записалось, то всё отрабатывается правильно. А если выполнять все присваивания последовательно (без промежуточных проверок и вывода результатов), то последнее теряется!!! В результате какое-то время работающий код был примерно таким: st.Num1 = dwNum1; st.Num2 = dwNum2; st.Num3 = dwNum3; st.Num4 = dwNum4; st.Num4 = dwNum4;Потом нашли (в списке исправленных ошибок), что такой глюк был признан - скачали новую версию - проверили... хм. работает - убрали дублёж присваивания, чтобы никого не смушал. Вот такие были у нас долбанутые весёлые будни программистов... Upd: К этому случаю очень подходит старый анекдот... Приходит один ассемблерщик к другому. Тот ему код свой показывает. Первый и спрашивает: - А зачем у тебя тут подряд два безусловных перехода? На что и идёт ответ, ставший уже (позже) классическим: - А вдруг первый не сработает?
Просмотров: 148 | Добавил: admin | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Поиск

Календарь
«  Октябрь 2013  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031

Архив записей

Copyright MyCorp © 2017Хостинг от uCoz