Page 2 of 2

Re: Step Over Halt и необновляемый labelslist

PostPosted: 01 Apr 2019, 18:23
by deathsoft
lvd wrote:потом оказывается что они копирасты и проверять на кряканом софте им западло.

Это и не требуется, им будет дан минимальный пример с исходником, на котором все будет проявляться.

Re: Step Over Halt и необновляемый labelslist

PostPosted: 01 Apr 2019, 18:48
by lvd
Ну я к тому, что теперь и вы поразвлекайтесь тоже.

Re: Step Over Halt и необновляемый labelslist

PostPosted: 01 Apr 2019, 23:11
by sq_skrju
Иначе в обработчик прерывания вообще не попасть будет, особенно, если его адрес неизвестен. А если надо проскипать halt и обработчик, то надо просто F4 (run here) на следующей за halt инструкцией жать.

Да, F4 норм отрабатывает в этом случае, просто часто бывает, что трейсишь с зажатой F8, и дебаггер спотыкается и залазит в обработчик, и из него потом выходить каждый раз не совсем удобно. Обычно, в 95% я трассирую свой собственный код (не знаю, как другие :), поэтому знаю, где адрес обработчика. А если надо его найти в чужом коде, можно посмотреть в регистр I и посмотреть адрес обработчика по адресу с I в старшем и #ff младшем байте.

Понимаю, что это вопрос удобства ) Кому-то удобнее так, кому-то так. Было бы круто, если бы была опция, хотя бы в .ini. Но если нет, то ладно :) Всё равно спасибо!

deathsoft wrote:color и stars_count - это вообще просто константы, а не метки адреса, а тупой sjasm их зачем то в user.l пихает, хотя туда должны попадать только метки-адреса.

А у меня кстати это нормально компилится! Констант в user.l нет.

если есть возможность попробуй в виртуалке под виндой, проявится там баг или нет.

Точно, проверил под виндой в виртуалке - бага нет, всё обновляется корректно! Значит баг в wine. Буду копать в этом направлении, может даже зарепорчу :) Огромное спасибо!

При нажатии на F7 или любые другие кнопки в дебагере происходит перезагрузка файла (и об этом пишется строчка в консоль, путь к user.l и число загруженных меток).

F7 - это же Step Into? То есть, даже при обычной трассировке должен перегружаться user.l? Но ведь в этом случае directory notification не используется? У меня он не перегружается и в консоль путь не пишется.

Re: Step Over Halt и необновляемый labelslist

PostPosted: 01 Apr 2019, 23:20
by deathsoft
sq_skrju wrote:что трейсишь с зажатой F8, и дебаггер спотыкается и залазит в обработчик, и из него потом выходить каждый раз не совсем удобно.

Кнопка F11 - выход из подпрограммы (автовыполнение до адреса на вершине стэка, в хэлпе там ошибка указано (PC), а должно быть (SP)) (это если обработчик не успел ничего напихать в стэк).

sq_skrju wrote: А если надо его найти в чужом коде, можно посмотреть в регистр I и посмотреть адрес обработчика по адресу с I в старшем и #ff младшем байте.

Ага, т.е. посмотреть в регистры, залезть в окно памяти, перейти на нужный адрес, взять вектор, поставить туда брекпоинт (и это только для IM2, а есть еще IM1 и IM0). А тут просто нажать F8 и все, а если надо пропустить, то F4 и никуда по памяти и регистрам не смотреть.

sq_skrju wrote:А у меня кстати это нормально компилится! Констант в user.l нет.

Возможно это попортили ту версию sjasm+ которая на гитхабе, там постоянно чтото меняют.

sq_skrju wrote:F7 - это же Step Into? То есть, даже при обычной трассировке должен перегружаться user.l? Но ведь в этом случае directory notification не используется? У меня он не перегружается и в консоль путь не пишется.

F7 - это чтобы директори нотификейшен отработал (т.к. он опрашивается в цикле дебагера, и в дебагере надо на что нибудь нажать, можно не F7, главное чтобы чтото отработало в цикле опроса клавишь, директори нотификейшен используется всегда, а его результат опрашивается в цикле опроса кнопок).

sq_skrju wrote:Значит баг в wine. Буду копать в этом направлении, может даже зарепорчу

Возможно в вайне который из транка уже все исправлено, но хз как его скомпилить и поставить на макось.

Re: Step Over Halt и необновляемый labelslist

PostPosted: 02 Apr 2019, 23:31
by sq_skrju
Всё понял)

Только последний вопрос: почему бы не сделать, чтобы вход в обработчик прерывания был по F7, а не по F8 - ведь это было бы логичнее? Чтобы HALT в данном случае обрабатывался как CALL - по F7 вход в обработчик, по F8 - Step Over. Какой смысл сейчас в F7 на хальте, когда после этого, фактически, ничего не происходит? Как это может пригодиться?

Re: Step Over Halt и необновляемый labelslist

PostPosted: 03 Apr 2019, 00:58
by deathsoft
sq_skrju wrote:олько последний вопрос: почему бы не сделать, чтобы вход в обработчик прерывания был по F7, а не по F8 - ведь это было бы логичнее?

потому что по F7 выполняется одна итерация halt (4такта) при этом изменяется счетчик тактов, таким образом можно счетчик тактов догнать до любого нужного значения, ну либо в конце кадра точно прошагать.

sq_skrju wrote:Какой смысл сейчас в F7 на хальте, когда после этого, фактически, ничего не происходит? Как это может пригодиться?

См. выше, точная потактовая обработка хальта (зачем это практически может быть нужно, не знаю, возможно трасировка бордера или еще чего, когда вывел в порт цвет бордера а дальше сделал хальт, и можно смотреть как построчно бордер рисуется).