User Tag List

Страница 145 из 174 ПерваяПервая ... 141142143144145146147148149 ... ПоследняяПоследняя
Показано с 1,441 по 1,450 из 1740

Тема: Реверс-инжиниринг УКНЦ (1515ХМ1&2, 1801ВП1, 1801ВМ2)

  1. #1441

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,401
    Спасибо Благодарностей отдано 
    1,703
    Спасибо Благодарностей получено 
    2,223
    Поблагодарили
    875 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Может толком и не увидел, но при записи по адресу, равному текущему PC, предвыборка должна сбрасываться. Адрес проверяется полностью на все 16 разрядов. Потому существует глюк, если записывать в адрес PC+1, то предвыборка не сбрасывается и исполняется инструкция, которая была там до записи.
    Да, есть схема сравнения, и она действительно сравнивает все 16 бит. Но она как бы особняком стоит, и ее потом опишу, когда руки дойдут.
    Глюк классный, не знал о нем)

  2. #1441
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #1442

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    //---------------------------------------------------------------------- Обработка JMP/JSR
    0x18: if (JMP) // Если JMP
    PC1=PC2=RA PLI_REQ // Запросить проверку запросов на прерывание
    GOTO 0x21 // Перейти на команду выборки следующей некэшированной инструкции
    else // Иначе JSR
    RA=R6=R6-2 IO_WR, IO_CMD // Инициировать цикл записи BRD на шину

    //---------------------------------------------------------------------- Обработка JSR
    0x0E: BRD=Rs // Инициилизировать BRD и продолжить цикл записи
    //----------------------------------------------------------------------
    0x0C: Rs=PC1
    //----------------------------------------------------------------------
    0x09: PC1=ACC PLI_REQ // Запросить проверку запросов на прерывание
    GOTO 0x21 // Перейти на команду выборки следующей некэшированной инструкции
    Да здесь тоже это видно. Особенность исполнения команды JSR. Из моего описания:
    Алгоритм: tmp := dst; –(SP) := R; R := PC; PC := tmp
    tmp := dst; –(SP) := PC; PC := tmp
    Описание: Содержимое указанного регистра пересылается в стековую память и заполняется содержимым счётчика команд, который указывает на ячейку, следующую за командой JSR. Новое содержимое счётчика команд определяется адресом операнда. Так как регистр R указывает на слово, следующее за инструкцией JSR, то это даёт возможность расположить после инструкции параметры подпрограммы, которые должны быть извлечены с применением автоинкрементной или косвенно-автоинкрементной адресации через регистр R. Использование регистровой адресации вызывает прерывание программы по условию «запрещённый код» через вектор 48, так как переход на регистры невозможен. При исполнении команды сначала вычисляется адрес dst, и если при вычислении адреса происходит зависание, то исполнение команды прекращается и соответственно занос регистра в стек и присвоение ему значения счётчика команд не выполняются. Если вычисление адреса операнда завершилось успешно, а зависание произошло во время занесения в стек содержимого регистра, то не смотря на зависание, процессор копирует в регистр значение счётчика команд, а в счётчик команд адрес операнда, и только после этого прерывается по зависанию. При использовании в качестве регистра счётчика команд алгоритм исполнения инструкции состоит в занесении в стек старого значения счётчика команд, а новое значение счётчика команд равно адресу операнда.
    Признаки: не изменяются.

    - - - Добавлено - - -

    Цитата Сообщение от Titus Посмотреть сообщение
    Да, есть схема сравнения, и она действительно сравнивает все 16 бит. Но она как бы особняком стоит, и ее потом опишу, когда руки дойдут.
    Глюк классный, не знал о нем)
    Описан с программой теста - здесь.

    Этот пользователь поблагодарил Alex_K за это полезное сообщение:

    Titus(27.11.2020)

  4. #1443

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,401
    Спасибо Благодарностей отдано 
    1,703
    Спасибо Благодарностей получено 
    2,223
    Поблагодарили
    875 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Вообще, наличие кэша, расширенной арифметики и всего с этим связанного, усложнили процессор раза в 2. Если не в 2, то полтора точно.

    - - - Добавлено - - -

    Цитата Сообщение от Alex_K Посмотреть сообщение
    и только после этого прерывается по зависанию.
    Ну так если это прерывание, то оно и может наступить лишь после PLI_REQ.
    Хотя, повторюсь, я блок таймаута еще не разбирал.

    - - - Добавлено - - -

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

    Это окончание цикла чтения автомат будет ждать. А конец цикла записи он не ждет.
    Та же самая особенность, вероятно, и в обработчике прерывания, когда стек уменьшается на 4.

  5. #1444

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Вообще, наличие кэша, расширенной арифметики и всего с этим связанного, усложнили процессор раза в 2. Если не в 2, то полтора точно.
    Скажите спасибо, что FIS сюда не впихнули. А ещё могли и пультовый отладчик впихнуть, как в оригинальных процессорах DEC.

  6. #1445

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,401
    Спасибо Благодарностей отдано 
    1,703
    Спасибо Благодарностей получено 
    2,223
    Поблагодарили
    875 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Скажите спасибо, что FIS сюда не впихнули. А ещё могли и пультовый отладчик впихнуть, как в оригинальных процессорах DEC.
    Это спасибо пусть @Vslav говорит, который взялся за ВМ3, где много чего впихнули)

  7. #1446

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    А, ну все же понятно. Цикл записи идет, а микропрограммный автомат его не ждет, идет дальше, пока не упрется в занятость блока ввода-вывода.
    А так как таймаут зависания достаточно долгий, то за это время успевает выполниться вся микропрограмма до конца.

    Это окончание цикла чтения автомат будет ждать. А конец цикла записи он не ждет.
    Та же самая особенность, вероятно, и в обработчике прерывания, когда стек уменьшается на 4.
    Вот-вот. Это то, о чём так долго говорили большевики.

  8. #1447

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,401
    Спасибо Благодарностей отдано 
    1,703
    Спасибо Благодарностей получено 
    2,223
    Поблагодарили
    875 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Вот-вот. Это то, о чём так долго говорили большевики.
    Вы навели меня на интересную мысль.
    Я все думал, зачем блок таймаута так жестко себя ведет, и подает сигнал ABORT по которому микропрограммный автомат сбрасывается, чего бы он не делал.
    А сейчас подумал, ведь застрять из-за таймаута можно только в четко определенных местах. Если был цикл записи, то перед следующим циклом шины. Если цикл чтения, то опять же, место ожидания конца чтения определено. А так как таймаут большой по сравнению даже с самой большой микропрограммой, то к моменту его наступления, автомат будет стоять в строго определенных позициях.

    Другой вопрос с внешним сбросом. Там циклы оборвутся в самых непредсказуемых местах.

  9. #1448

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Вы навели меня на интересную мысль.
    Я все думал, зачем блок таймаута так жестко себя ведет, и подает сигнал ABORT по которому микропрограммный автомат сбрасывается, чего бы он не делал.
    А сейчас подумал, ведь застрять из-за таймаута можно только в четко определенных местах. Если был цикл записи, то перед следующим циклом шины. Если цикл чтения, то опять же, место ожидания конца чтения определено. А так как таймаут большой по сравнению даже с самой большой микропрограммой, то к моменту его наступления, автомат будет стоять в строго определенных позициях.

    Другой вопрос с внешним сбросом. Там циклы оборвутся в самых непредсказуемых местах.
    Вот-вот. Если это чтение с шины, то его результата надо ждать в любом случае. А если запись, то засунул в BRD что надо, дал задание и щёлкай дальше. ГЫ. В чём-то напоминает SMARTDRV.

    - - - Добавлено - - -

    Цитата Сообщение от Titus Посмотреть сообщение
    Я все думал, зачем блок таймаута так жестко себя ведет, и подает сигнал ABORT по которому микропрограммный автомат сбрасывается, чего бы он не делал.
    Тут есть ещё тонкость с чтением предвыборки. Например у нас в ячейке 0157776 команда BR куда-то назад. После её чтения и начала декодирования, будет читаться следующая инструкция по адресу 0160000. Но в данном случае TRAP4 не произойдёт. Т.е. при чтении предвыборки TRAP4 отложенный получается.

  10. #1449

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,401
    Спасибо Благодарностей отдано 
    1,703
    Спасибо Благодарностей получено 
    2,223
    Поблагодарили
    875 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Т.е. при чтении предвыборки TRAP4 отложенный получается.
    Это тоже надо рассмотреть отдельно.

  11. #1450

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Я все думал, зачем блок таймаута так жестко себя ведет, и подает сигнал ABORT по которому микропрограммный автомат сбрасывается, чего бы он не делал.
    Там еще интереснее. По ошибкам шины на предвыборке ABORT не генерируется, вместо этого подается фантомный REPLY. А исключение будет генерироваться только при попытке использовать результаты неудавшейся предвыборки. Например, если есть команда mov (R0)+, @#50, и слово адрес приемника находится вне памяти, то будет выполнено:
    - предвыборка слова 50, с фантомным тайм-аутом
    - чтение по адресу регистра R0
    - инкремент регистра R0
    - исключение
    У меня на гитхабе специальные тесты под предвыборку понаписаны, сложная она.

    Эти 2 пользователя(ей) поблагодарили Vslav за это полезное сообщение:

    Titus(28.11.2020), yu.zxpk(28.11.2020)

Страница 145 из 174 ПерваяПервая ... 141142143144145146147148149 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 32
    Последнее: 18.12.2024, 18:19
  2. Реверс-инжиниринг игры Boovie
    от Oleg N. Cher в разделе Программирование
    Ответов: 41
    Последнее: 09.01.2022, 23:07
  3. Реверс инжиниринг печатной платы
    от Filin в разделе Несортированное железо
    Ответов: 36
    Последнее: 11.03.2018, 22:46
  4. Куплю 1515ХМ1-6006, 1515ХМ1−6008
    от moxjemi в разделе Барахолка (архив)
    Ответов: 3
    Последнее: 10.01.2012, 17:23
  5. 1801ВМ2 А и Б
    от dk_spb в разделе ДВК, УКНЦ
    Ответов: 2
    Последнее: 03.05.2010, 11:51

Ваши права

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