Страница 2 из 2 Первая 12
Показано с 21 по 32 из 32

Тема: Как правильно пользоваться IDA

  1. #21
    Не хочу! Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    61
    Сообщений
    36,249

    По умолчанию Re: Как правильно пользоваться IDA

    Цитата Сообщение от Wladimir_TS Посмотреть сообщение
    а что у PIC16yxxx происходит при переполнении стека,
    Как и везде - белый пушной зверек
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Ну что, можете меняться обратно."(с)типа анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  2. #22
    Завсегдатай Аватар для JazMan
    Регистрация
    15.02.2011
    Адрес
    Москва
    Сообщений
    1,874

    По умолчанию Re: Как правильно пользоваться IDA

    Цитата Сообщение от Wladimir_TS Посмотреть сообщение
    ЗЫ2 - еще интересный момент - из одной части программы в другую передается переменная...но передается она в регистре счетчика-таймера 2 (основном - TMR2)... но самое веселое в том, что таймер в это время - СЧИТАЕТ на Fclk/4 и до программы целевой доходит данные в несколько "инкрементированном" виде, а вот коли промеж ними что-то как-то по другому работает - то данные исказятся и все пойдет "по плинтусу"...
    Это кто ж такое придумал то..

    p.s. Как защита от отладки, может и имеет смысл. В Z80 часто использовали значение регистра регенерации, для ключа расшифровки.

  3. #23
    Новичок
    Автор темы
    Аватар для Wladimir_TS
    Регистрация
    25.01.2010
    Адрес
    Россия
    Сообщений
    77

    По умолчанию Re: Как правильно пользоваться IDA

    Цитата Сообщение от Alex Посмотреть сообщение
    Как и везде - белый пушной зверек
    По точнее-бы - переход по 0му адресу , зависание или....(самоликвидация ) ?

    Сейчас основная проблема - ситуация описанная в сообщении 15.

  4. #24
    Завсегдатай Аватар для Openreel
    Регистрация
    02.09.2006
    Адрес
    Санкт-Петербург
    Возраст
    49
    Сообщений
    3,160

    По умолчанию Re: Как правильно пользоваться IDA

    Цитата Сообщение от JazMan Посмотреть сообщение
    Это кто ж такое придумал то..
    У страха глаза велики. Это же не исходник, а взгляд начинающего реверсера.
    Возможно, что "передающая часть" это условный timeout_set(), а "принимающая часть" это timeout_check()

    ---------- Сообщение добавлено 13:04 ---------- Предыдущее сообщение было 13:03 ----------

    Цитата Сообщение от Wladimir_TS Посмотреть сообщение
    По точнее-бы
    В профильную литературу, там этот вопрос 100500 раз разбирали по атомам. Правда обычно применительно к персоналкам, но какая разница.
    WBR, Michael.
    Цель расчетов - понимание, а не числа (с) Хемминг.

  5. #25
    Новичок
    Автор темы
    Аватар для Wladimir_TS
    Регистрация
    25.01.2010
    Адрес
    Россия
    Сообщений
    77

    По умолчанию Re: Как правильно пользоваться IDA

    Цитата Сообщение от Openreel Посмотреть сообщение
    В профильную литературу, там этот вопрос 100500 раз разбирали по атомам. Правда обычно применительно к персоналкам, но какая разница.
    В данном аппарате стек возвратов - аппаратный узел, а не область в памяти. Вот как он работает в нестандартных условиях использования непонятно.

    Как и с примером в сообщении 15 - он тупо должен считать от 12h до единицы.... а периодически после 1цы выдает FFh... то-ли глюк симулятора, то-ли глюк у меня, НО в тексте программы за этим местои идет проверка на то что число больше 12 !!! А значит глюк имел место быть и у разработчика ПО в далеком 2001 году.

  6. #26
    Завсегдатай Аватар для Openreel
    Регистрация
    02.09.2006
    Адрес
    Санкт-Петербург
    Возраст
    49
    Сообщений
    3,160

    По умолчанию Re: Как правильно пользоваться IDA

    Цитата Сообщение от Wladimir_TS Посмотреть сообщение
    Вот как он работает в нестандартных условиях использования непонятно.
    А документацию читать не царское дело?
    Да и книг по пикам навалом уже лет 15.
    Цитата Сообщение от Wladimir_TS Посмотреть сообщение
    Как и с примером в сообщении 15
    первая инструкция по ресету
    DECFSZ 0x73, F
    Обращение к не инициализированной переменной. За такое обычно бьют линейкой по пальцам.
    WBR, Michael.
    Цель расчетов - понимание, а не числа (с) Хемминг.

  7. #27
    Частый гость Аватар для RuDiger
    Регистрация
    23.02.2007
    Адрес
    Петербург
    Сообщений
    102

    По умолчанию Re: Как правильно пользоваться IDA

    А прерывания там не используются?

  8. #28
    Не хочу! Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    61
    Сообщений
    36,249

    По умолчанию Re: Как правильно пользоваться IDA

    Цитата Сообщение от Wladimir_TS Посмотреть сообщение
    В данном аппарате стек возвратов - аппаратный узел, а не область в памяти. Вот как он работает в нестандартных условиях использования непонятно.
    Если мне память не изменяет, он закольцован.

    ---------- Сообщение добавлено 19:24 ---------- Предыдущее сообщение было 19:23 ----------

    Цитата Сообщение от Openreel Посмотреть сообщение
    Да и книг по пикам навалом уже лет 15.
    30.
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Ну что, можете меняться обратно."(с)типа анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  9. #29
    Новичок
    Автор темы
    Аватар для Wladimir_TS
    Регистрация
    25.01.2010
    Адрес
    Россия
    Сообщений
    77

    По умолчанию Re: Как правильно пользоваться IDA

    Цитата Сообщение от Openreel Посмотреть сообщение
    А документацию читать не царское дело?
    Да и книг по пикам навалом уже лет 15.
    Это сколь их надо перерыть, что-б узкий такой момент выяснить. Я тут в паре глянул (русскоязычных) - там только говорят - мол следите за стеком и не превышайте глубины вызовов. А что будет при превышении не сказано, где-то может и сказано - но посчитал - тут проще спросить.

    Цитата Сообщение от Openreel Посмотреть сообщение
    первая инструкция по ресету
    DECFSZ 0x73, F
    Обращение к не инициализированной переменной. За такое обычно бьют линейкой по пальцам.
    Как-бы , наверное - да. Но это ассемблер. На самом деле в переменной по старту число 0. В программе есть обнуление данной переменной, а в симуляторе я забыл. Проверю уже завтра, рабочий день кончается.

    ---------- Сообщение добавлено 18:58 ---------- Предыдущее сообщение было 18:57 ----------

    Цитата Сообщение от RuDiger Посмотреть сообщение
    А прерывания там не используются?
    Да по переполнению таймера-счетчика 1

  10. #30
    Завсегдатай Аватар для Openreel
    Регистрация
    02.09.2006
    Адрес
    Санкт-Петербург
    Возраст
    49
    Сообщений
    3,160

    По умолчанию Re: Как правильно пользоваться IDA

    Цитата Сообщение от Wladimir_TS Посмотреть сообщение
    Это сколь их надо перерыть, что-б узкий такой момент выяснить.
    Надо задаться другим вопросом, почему, начиная с примерно 2000 года практический нет книг по программированию на асме под пики и несколько десятков, если не сотен книг по программированию под пики на си.
    Потом подумать, как все эти люди умудрялись при этом не перегружать стек, хоть и делали явно серьезные проекты.
    Ну до кучи написать на си простейшую рекурсивную прогу и прошлепать оную в дизасме под симулятором, чтоб понять наконец, в чем же тут подвох.
    На си - ну, чтоб явно не накосячить.
    ...
    Программеру надо читать профильную литературу непрерывно, тоннами. Без вариантов.
    WBR, Michael.
    Цель расчетов - понимание, а не числа (с) Хемминг.

  11. #31
    Новичок
    Автор темы
    Аватар для Wladimir_TS
    Регистрация
    25.01.2010
    Адрес
    Россия
    Сообщений
    77

    По умолчанию Re: Как правильно пользоваться IDA

    Ну куда там Си - там 4096 слов памяти (из которых занято 4092) и 192 байта ОЗУ из которых занято больше 192, так как для хранения переменных используются часть регистров ввода-вывода не используемой переферии. И как впихнуть тот-же функционал на Си в ту-же память. А в 2001 году (а начало разработки еще раньше вестимо началось) какие были альтернативы от Microchip по цене ?

    Я не программе - я только интересуюсь немного для саморазвития. Написать что-то самостоятельно с нуля - не моих мозгов уровень полета. Просто вот заинтерисовали подпрограммы с взаимным рекурсивным вызовом. К сожалению отмоделировать в симуляторе их не получилось, так как неизвестны переменные используемые этими подпрограммами - они зависят от внешних параметров, которые в симулятор не занести никак.

    Пока с заданием начального значения в ячейке не просимулировал - не до того.

  12. #32
    Завсегдатай Аватар для Openreel
    Регистрация
    02.09.2006
    Адрес
    Санкт-Петербург
    Возраст
    49
    Сообщений
    3,160

    По умолчанию Re: Как правильно пользоваться IDA

    Цитата Сообщение от Wladimir_TS Посмотреть сообщение
    у куда там Си - там 4096 слов памяти (из которых занято 4092) и 192 байта ОЗУ
    Для написания учебной сишной - выше крыши. Уж примитивной рекурсии(ради рекурсии и без оптимизаций) - точно с запасом.

    Есть понятие - хвостовая рекурсия (tail recursion). При наличии грамотного компилятора оно вообще стек не жрет, магия.
    WBR, Michael.
    Цель расчетов - понимание, а не числа (с) Хемминг.

Страница 2 из 2 Первая 12

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •