User Tag List

Страница 150 из 174 ПерваяПервая ... 146147148149150151152153154 ... ПоследняяПоследняя
Показано с 1,491 по 1,500 из 1740

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

  1. #1491

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

    По умолчанию

    И всё-таки глюк есть. Короткая программа:
    Код:
    1000     CLR    R0
    1002     MOV    #2,R3
    1006     MUL    R3,R7
    1010     INC    R0
    При умножении происходит переход на адрес 02020, останов на 02022, но перед этим исполняется INC R0, которая читается по предвыборке.

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

    Ещё интереснее, если вместо INC R0 поставить команду перехода BR, код 0410. Тогда адрес останова становится равным 02042. Во как.

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

    А если поставить команду CLR PC (код 005007), то переход на адрес 0, останов на 2.

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

    А если в ячейку 01010 занести код 0137 (JMP @#....), а в ячейку 02020 значение 05000, то произойдёт переход на адрес 05000.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	201201-231402-530.jpg 
Просмотров:	138 
Размер:	72.0 Кб 
ID:	74089  

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

    hobot(02.12.2020), Titus(02.12.2020)

  2. #1492

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

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    И всё-таки глюк есть. Короткая программа:
    Надо запросить у @Vslav'а модель для данных случаев.

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

    hobot(02.12.2020)

  3. #1493

    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    7,161
    Спасибо Благодарностей отдано 
    2,979
    Спасибо Благодарностей получено 
    374
    Поблагодарили
    311 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Возможно тесты Patron'а пригодятся, ПКМ ссылка в данной теме лишней не будет?
    http://archive.pdp-11.org.ru/ukdwk_a...t/TESTY_FORUM/
    Архив программ для УК-НЦ, ДВК и БК.

    Ищу игру "СТРАНА МОНСТРОВ" [monstr.sav] для ДВК.

  4. #1494

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

    По умолчанию

    На J-11 ошибки нет

  5. #1495

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

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    На J-11 ошибки нет
    Не удивительно, ведь ВМ2 не является ни чьей копией, а свой собственный)

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

    Цитата Сообщение от Alex_K Посмотреть сообщение
    И всё-таки глюк есть. Короткая программа:
    Проанализируем ситуацию.
    Микропрограмма выборки кэшированной инструкции (адрес 0x01) принимает решение о перекешировании, если IX1=1.
    IX1=1, если совпало одно из условий:
    1. Совпало условие блока условий (BRA=1). В нашем случае неактуально, т.к. проверка условий не запрашивалась.
    2. Был активен RCMD_SET. Не разбирался, но это что-то из блока таймаута и блока модификации кэша, когда записали новое значение по адресу, на который указывал R7.
    3. Предыдущая инструкция была двухоперандная (в битах 14,13,12 был не 000), при этом в поле приемника (биты 8,6,7) был закодирован R7. Условие двухоперандности совпадает, но вот в поле приемника у нас не R7, а R6.

    Итого, условие перекеширования невыполнено. А значит используем кэш (BIR), а там у нас предыбранная команда по старому адресу.

    Поэтому и получается, что первое слово выбирается по адресу следующему за MUL, а следующее по адресу перехода.
    Причем, именно по адресу перехода, а не по адресу перехода + 2, как можно было бы предположить.
    А все потому, что был пропущен шаг 0x21, который занимается перекешированием инструкции по адресу PC2, затем делает PC2=PC2+2.
    Поэтому при отработке шага 0x01 у нас в PC2 все еще адрес перехода, а не адрес перехода+2.

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

    Я думаю, что если задать регистр приемник R7, а не R6, то глюка не будет.
    Последний раз редактировалось Titus; 02.12.2020 в 13:11.

  6. #1496

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Надо запросить у @Vslav'а модель для данных случаев.
    Вечером прогоню.

  7. #1497

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    3. Предыдущая инструкция была двухоперандная (в битах 14,13,12 был не 000), при этом в поле приемника (биты 8,6,7) был закодирован R7. Условие двухоперандности совпадает, но вот в поле приемника у нас не R7, а R6.
    Цитата Сообщение от Titus Посмотреть сообщение
    Я думаю, что если задать регистр приемник R7, а не R6, то глюка не будет.
    Titus, а где это вы видел в моём тест использование R6? В качестве приёмника я использовал именно R7, чтобы не портить указатель стека, и чтобы использовался только один регистр, а не два.

  8. #1498

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

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Titus, а где это вы видел в моём тест использование R6? В качестве приёмника я использовал именно R7, чтобы не портить указатель стека, и чтобы использовался только один регистр, а не два.
    Действительно)
    Значит нужен тест с R6)

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

    Тогда нужен тест на модели, и чтобы обязательно был видны поля NA и IX и RI.

  9. #1499

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

    По умолчанию

    Все подтверждается:
    Код:
        148		001000 					.	= 1000			;
        149	001000	005000 			tst0:		clr	R0
        150	001002	012703 	000002 				mov	#2, R3
        151	001006	070703 					mul	R3, PC
        152	001010	005200 					inc	R0
        153
        154	001012						.blkw	2000

    Скрытый текст



    [свернуть]


    Вариант с br (410)
    Код:
        148		001000 					.	= 1000			;
        149	001000	005000 			tst0:		clr	R0
        150	001002	012703 	000002 				mov	#2, R3
        151	001006	070703 					mul	R3, PC
        152	001010	000410 					.word	410
        153	001012	005200 					inc	R0
        154
        155	001014						.blkw	2000

    Скрытый текст



    [свернуть]


    Вариант mul R3,SP

    Скрытый текст



    [свернуть]

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

    Alex_K(02.12.2020), Titus(02.12.2020)

  10. #1500

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

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    Все подтверждается:
    Как я понимаю, пока читается ячейка с адресом 02020 (считается по предвыборке), исполняется команда из ячейки 01010, потому и BR переходит на адрес 02020+010*2.
    Цитата Сообщение от Vslav Посмотреть сообщение
    Вариант mul R3,SP
    А какое было значение SP?

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

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

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

Эту тему просматривают: 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

Ваши права

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