User Tag List

Страница 166 из 174 ПерваяПервая ... 162163164165166167168169170 ... ПоследняяПоследняя
Показано с 1,651 по 1,660 из 1740

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

  1. #1651

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

    По умолчанию

    Я думаю, что проблема с командами, использующими IR (регистр инструкций) может происходить из-за того, что в цикле IR_STB, когда BIR защелкивается в IR, при сбитом кэше может прилететь новое значение, и, таким образом, получится, что команда выполняется предыдущая, а поле IR используется от следующей команды.
    Для команд:
    1. SEx, CLx - это младшие 4 бита, определяющие маску флагов.
    2. SOB, BRA, Bcc - поле смещения перехода
    3. MARK - тоже самое.

    Но для этого нужно, чтобы время памяти было такое, что BIR_STB прилетает именно в момент IR_STB. Ни раньше (тогда кэш исправится), ни позже, тогда будет просто выполнение предыдущей команды.

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

    Ну и еще небольшая ложечка дёгтя, если мое предположение верное.
    Команда BRA/Bcc тоже использует BIR, то можно предположить, что подобная накладка, когда BIR прилетает во время IR_STB, спутает все карты.
    А именно, выполняться будет Bcc, до этого находящаяся в BIR, а анализироваться блоком условий будет следующая команда.
    Т.е. допустим, идут две команды BRA, BEQ. Выполняться будет BRA, т.к. она уже в кэше, а условие и смещение будет от BEQ.
    Большая путаница может быть, когда следующая команда не является командой перехода, но все равно совпадает с маской условий для Bcc.
    Например, маска для BEQ, BLOS = x.000.x01.1xxx.xxx.xxx (условие Z=1). Но в нее попадает, например, и команда NEG.
    Таким образом, если идет BRA, затем NEG, то для BRA будет условие Z=1, а смещение перехода будет взято из младшего байта NEG.

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

    Alex_K(20.12.2020)

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

  3. #1652

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

    По умолчанию

    Ещё интересное наблюдение - команда MOV -(PC),R5 в регистр R5 ложит не саму себя, как должно быть, а следующую за ней команду.

  4. #1653

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

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Ещё интересное наблюдение - команда MOV -(PC),R5 в регистр R5 ложит не саму себя, как должно быть, а следующую за ней команду.
    А вот это очень странно, потому что вычитание 2 должно делаться из PC1, а не из PC2. А PC1 указывает на следующую команду.
    Надо просить сделать тест с графиком на асинхронной модели у @Vslav'a.

  5. #1654

    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Ещё интересное наблюдение - команда MOV -(PC),R5 в регистр R5 ложит не саму себя, как должно быть, а следующую за ней команду.
    Странно. По идее, эта команда должна намертво зациклить. У меня в контроллере AZ всё весело работает Или это связано с R5?

    Как это работает в контроллере AZ

    Мой AZ выдает при считывании из регистра 17777226 последовательно коды 106447, 340, 14700, 10000, 14720, 240, 14720, <очередная команда загрузчика> ... 14720, <последняя команда загрузчика>, 14707, 10000. Первый код - это команда MTPS, далее код, который пересылается в PS, далеее в R0 пересылается адрес начала загрузчика - 10000, далее первая и очередные команды загрузчика, далее в PC пересылается адрес начала загрузчика и далее начинает работать сам загрузчик.

    Идея этого, так сказать, аппаратного загрузчика, была опубликована в МПСС, для ЦП М2, но работает оно и на М6, и на ВМ1, и на ВМ2, и на ВМ3, и на 11/73 - это где оно проверено.
    [свернуть]
    Хотя нет, скорее всего при чтении из страницы ввода-вывода просто блокируются предвыборки...
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

  6. #1655

    Регистрация
    13.07.2018
    Адрес
    г. Переславль-Залесский
    Сообщений
    710
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    45
    Поблагодарили
    41 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Ещё интересное наблюдение - команда MOV -(PC),R5 в регистр R5 ложит не саму себя, как должно быть, а следующую за ней команду.
    Тут такое дело, даже у DEC разные процессоры ведут себя в таких и подобных случаях по разному. При этом в примечаниях про процессоры это говорится. Вещь известная.

  7. #1656

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,508
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex Посмотреть сообщение
    Тут такое дело, даже у DEC разные процессоры ведут себя в таких и подобных случаях по разному. При этом в примечаниях про процессоры это говорится. Вещь известная.
    Не совсем так - разное поведение, когда используется Rx и -(Rx) или (Rx)+ - то есть регистр и автоинкремент/автодекремент с этим же регистром. А тут регистры разные.

  8. #1657

    Регистрация
    13.07.2018
    Адрес
    г. Переславль-Залесский
    Сообщений
    710
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    45
    Поблагодарили
    41 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Именно про -(PC) или (PC)+ тож...
    По идее и в книжках одно, а по факту...
    Возможно проблема в конвейере...
    Последний раз редактировалось Alex; 21.12.2020 в 10:31.

  9. #1658

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,508
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex Посмотреть сообщение
    Именно про -(PC) или (PC)+ тож..
    Нет. Из документации

    1. 2x и 4x
    OPR %R,(R)+ ; OPR %R,-(R) using SAME register as both source and destination

    2. 3x и 5x
    OPR %R, @(R)+ ; OPR %R, @-(R) using SAME register as both source and destination

    3. 6x, 7x, 67 и 77
    OPR PC, X(R) ; OPR PC, @X(R) ; OPR PC,@A; OPR PC,A

    -(PC) и (PC)+ попадает только под первый сценарий, но в нем нужен вариант типа MOV PC, -(PC)

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

    Поскольку я вожусь с ДП, у меня как раз открыты эти страницы - где отличия описываются

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

    Собственно, OPR PC,@A; OPR PC,A в сценарий можно было и не включать, ибо это частный случай 6x и 7x

  10. #1659

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

    По умолчанию

    Цитата Сообщение от AFZ Посмотреть сообщение
    Мой AZ выдает при считывании из регистра 17777226
    Если регистра 0177230 не существует, то при неудачной предвыборке (несуществующий регистр) кэш сбрасывается и проблемы не существует. Также проблемы нет, если между DIN и RPLY было менее четырёх тактов.

  11. #1660

    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Если регистра 0177230 не существует, то при неудачной предвыборке (несуществующий регистр) кэш сбрасывается и проблемы не существует. Также проблемы нет, если между DIN и RPLY было менее четырёх тактов.
    Хм. Не поленился, включил свой 1201/03 (ВМ3).

    ***** ДОСТУПНОЕ ОЗУ - 256 K *
    @ 001000
    @1000/000000 14705
    00001002/000000 240
    00001004/000000
    @1000G

    <здесь ВМ3 в цикле исполняет этот самый MOV -(R7),R5 пока не активируешь К ОСТ Н (B HALT L) >

    @ 001000
    @R5/014705
    Последний раз редактировалось AFZ; 21.12.2020 в 22:25.
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

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

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

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

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

Похожие темы

  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

Ваши права

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