Всем привет. Очень нужна помощь "зала". Вкратце обрисую сложившуюся ситуёвину. Дело было так. Сижу я, значит, кодю помаленьку, периодически компиляю накоденное. И вот в один прекрасный момент получаю вылет по AV. Т.к. был почти уверен в отсутствии ошибки, сразу полез в дебугер. Открываю прогу в "Оле"… и ужасаюсь. Эмбаркадеровское поделие сгенерило короткий переход назад вместо ближнего вперёд (сука, а ведь они ещё и бабки за свой высер хочут). Небольшая рокировка кусочков кода временно решила проблему, а затем код разросся, дистанция прыжка увеличилась и проблема рассосалась совсем. НО на хую я вертел такое программирование, когда после каждого чиха приходится открывать прогу в дизасме и проверять правильность переходов. После того, как докатал прожку, решил искусственно (NOP'ами) смоделировать описанный конфуз в микроскопическом тестовом проектике. Не сразу, но получилось. На всякий случай компильнул тот же код TAsm'ом – всё пучком. В общем просьба моя заключается в следующем. Если тут есть аноны, юзающие Делфю версий выше XE, компильните плис проектик из архива – http://rgho.st/download/8bsrghQ5N/d521d089595c0aa91f0fe5cf3fc38d847681575f/Test_Jump.zip (бинарники присутствуют, дабы анон не думал, что ОП гонит), и проверьте на предмет вышеописанной бессовестной подлянки от сурьёзной конторы. Лелею надежду, что сей баг был исправлен. Особенно интересует компиль из XE2, ибо кол-во багов пропорционально фичам, да и размер dcu'шек с каждой версией растёт как на дрожжах.
>>811683 (OP)2016 год, чем вы, блять, занимаетесь? Какое делфи?
>>811771Занимаюсь программированием для души. По теме есть что сказать?
>>811683 (OP)>Программировать на Delphi>Смотреть на результат в OllyDbgНу раз код пишется на высокоуровневом языке, то и отлаживается он средствами высокоуровневого языка. Если отладчик показывает ошибку ну совсем в неположенном месте (на выходе из блока, по окончанию подпрограммы), то значит не удалили объект, который нужно было удалять, или не освободили память.Единственный способ избежать Access Violation - программировать на интерпретируемых языках ещё более высокого уровня
>>812344А значит - вот это всё гадание с помощью TASM Его вообще есть полноценные релизы под Windows? и OllyDbg - это не системный подход, а просто какой-то ритуал.Возможно в процессе работы программы ссылка на значение в памяти, которая указывает на область данных, стала внезапно указывать на область в памяти где находится программа. Современные ОС этого не любят и за этим следят. Возникновение этой ситуации - уже симптом чего-то нехорошего.ОП, готовь костыли к своей программе, "анальгин" в виде NOP, дописанных вручную в бинарники не поможет
>>812344>Ну раз код пишется на высокоуровневом языкеКод пишется на BASM.>отлаживается он средствами высокоуровневого языкаДелфовый отладчик – кусок говна по сравнению с OllyDbg>не удалили объект … не освободили память.Нет никаких объектов и выделения памяти – только одна процедура с кучей нопов и тремя джампами.>>812350>вот это всё гадание с помощью TASMНикакого гадания. Бинари приложены, асм-листинги тоже.>Его вообще есть полноценные релизы под Windows?Да, входит в "RAD Studio" и все более ранние продукты. После доработки напильником становится ЕДИНСТВЕННЫМ асмом с поддержкой function level linking.>Возможно в процессе работы программы ссылка на значение в памяти, которая указывает на область данных(Без)условные переходы никакого отношения к чтению/записи памяти не имеют, смещение – это непосредственное значение.>ОП, готовь костыли к своей программеС программой всё в порядке, но чтобы в дальнейшем не нарываться на такие грабли, хотелось бы найти версию компилятора без этого бага.
Помню когда был школьником писал какую-то хуйню в делфи. Она не работала, хотя я долго медитировал над кодом и в нем не было ничего особенно сложного. Тогда я запустил дебагер и прошелся им по циклу. И в одной итерации без всякой видимой причины стрелка внезапно перепрыгнула через одну строчку где должна была меняться переменная. Сказать что я охуел ничего не сказать. Показал эту хуйню училке - она только руками развела, что поделать десу. Такая вот морозная былина.