User Tag List

Страница 142 из 174 ПерваяПервая ... 138139140141142143144145146 ... ПоследняяПоследняя
Показано с 1,411 по 1,420 из 1740

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

  1. #1411

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

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    R0 очищается только для 030?
    В данной команде да.
    Уверяю, CODE030 не совмещен ни в одной команде с другими инструкциями. Для него четко написана эта логика. Причем, эта логика не явялется мусором. Другой вопрос, что в нее заложено и зачем. Возможно, что-то тестовое. Или хотели сделать одно, а получилось другое. Но то, что четко хотели - это однозначно.

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

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Titus, мой труд это ничто, по сравнению с вашими и Vslav-а. Так ещё вам ОГРОМНОЕ СПАСИБО.
    Все друг другу помогают.
    Мой реверс ВМ2 в виде логической схемы, и выведенного из него понимания работы, стоит на трех китах, построенных @Vslav'ом, который днями и ночами, а иногда и после полудня трудился, переводя схему с фотографии в транзисторный вид. А потом еще подписывая цепи.

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

    Я, честно говоря, когда засел за ВМ2 в августе, думал, что я щас быстренько переведу все в логику и пойму, как работает.
    Фигушки. Перевел я может и быстро, но вот оказался он таким монстром, что если бы я знал заранее, может быть и не брался бы) Ну нафиг)

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

    hobot(24.11.2020), ZPilot(24.11.2020)

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

  3. #1412

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Уверяю, CODE030 не совмещен ни в одной команде с другими инструкциями. Для него четко написана эта логика. Причем, эта логика не явялется мусором. Другой вопрос, что в нее заложено и зачем. Возможно, что-то тестовое. Или хотели сделать одно, а получилось другое. Но то, что четко хотели - это однозначно.
    Вот в том и вопрос. А ответа наверное щас уже и не получить. По документации чётко написано, что 020 и 030 исполняются одинаково. Да и в 1806ВМ2 это убрали, там 030 исполняется как 020.

  4. #1413

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

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Вот в том и вопрос. А ответа наверное щас уже и не получить. По документации чётко написано, что 020 и 030 исполняются одинаково. Да и в 1806ВМ2 это убрали, там 030 исполняется как 020.
    Если только удастся понять логически, чтобы это могло быть, и какую функцию могло выполнять.
    Ясно, что что-то циклическое. Счетчик в R0. Он не может превысить 128. При выходе устанавливает флаги, значит они зачем-то могут быть нужны.
    Может подсчитывает позицию первого значимого бита в R2.
    Смотрите, если R2[7]=1 при входе, значит впереди числа 0 значащих бит. R0=0.
    А дальше в цикле двигается и проверяется, пока первый ненулевой бит в R2 не достиг позиции 7. Тогда цикл прекращается и выдает в R0, сколько нулевых бит было до первого значащего бита.
    Так же цикл ограничен 128 итерациями на случай, если человек задал неправильные данные.
    А установленный бит C позволяет остановить все, если R2 был равен 0.

    Игого, устанавливаем бит C=1, пишем в R2 любое число, и получаем на выходе в R0 число ведущих нулевых бит. И еще в Z получаем условие, не ноль ли там было бит ведущих.
    Другой вопрос, почему эта команда только для HALT-режима. Даешь USER'ам равные с HALT'ом права на использование полезных инструкций!

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

    Возможно, это хотели использовать для целей преобразования целого числа в число с плавающей точкой.
    Таким образом можно было узнать порядок числа. Но, может быть не понадобилось, или получилось с ошибкой. Например, хотели двигать циклически R2<<R3<<R1, а написали неправильно, и забили потом.

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

    Смотрите, допустим сдвиг действительно должен был быть циклическим, тогда:
    R2.R3.R1 - начальное целое число.
    после выполнения инструкции, R0 показывает число ведущих нулевых бит (порядок), а R2.R3.R1 сдвигается до упора влево, выравниваясь по левому краю мантиссы. Очень все логично.
    Но накосячили, и цикличность не получилась.

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

    Да, я уже уверен, что это для этого и было предназначено.

  5. #1414

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Смотрите, допустим сдвиг действительно должен был быть циклическим, тогда:
    R2.R3.R1 - начальное целое число.
    после выполнения инструкции, R0 показывает число ведущих нулевых бит (порядок), а R2.R3.R1 сдвигается до упора влево, выравниваясь по левому краю мантиссы. Очень все логично.
    Но накосячили, и цикличность не получилась.
    Мысль очень здравая, целиком поддерживаю. А косячность получилась в том, что между регистрами перенос не поддерживался, в итоге в R3 и R2 всё время вдвигался бит C с PSW. А так, да сдвиг влево мантиссы - это её нормализация. В R0 получаем на сколько надо прибавить порядок. Но это только одна часть. Иногда для нормализации мантиссу надо двигать вправо, а это вроде не реализовано. Ну и эмуляция FIS производится в HALT-режиме, потому и эта команда работает только в HALT.

  6. #1415

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

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Мысль очень здравая, целиком поддерживаю. А косячность получилась в том, что между регистрами перенос не поддерживался, в итоге в R3 и R2 всё время вдвигался бит C с PSW. А так, да сдвиг влево мантиссы - это её нормализация. В R0 получаем на сколько надо прибавить порядок. Но это только одна часть. Иногда для нормализации мантиссу надо двигать вправо, а это вроде не реализовано. Ну и эмуляция FIS производится в HALT-режиме, потому и эта команда работает только в HALT.
    Ну вот, значит все сходится. На этом можно и удовлетворится в разгадке этой мини-гипотезы Пуанкаре)

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

    Перенос можно было сделать легко, прописав запись бита C в PSW[0] после каждой команды сдвига.
    Но не шмогли.

  7. #1416

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

    По умолчанию ВМ2: SOB, RTI и RTT

    Микропрограммы для SOB, RTI и RTT:

    SOB:
    Код:
    //======================================================================
    //			
    // 		        Команда SOB Rn,mm (077xxx)
    // 
    //======================================================================
    
    0x0D:			Rn=Rn-1			GET_STATE Z=0		// Если Z=0, то BRA=1, иначе BRA=0
    //----------------------------------------------------------------------			
    0x27:	if (BRA=1)							// Если BRA=1 (в прошлой команде Z=0)
    			PC1=PC2=PC1-((IR&0x003F)*2) PLI_REQ		// Изменить адрес PC1, запросить проверку запросов на прерывание
    			GOTO 0x21					// Перейти на команду выборки следующей некэшированной инструкции
    	else								// Иначе
    			ACC=ACC			PLI_REQ			// Запросить проверку запросов на прерывание	
    			GOTO 0x01					// Перейти на команду выборки следующей инструкции

    RTI, RTT:
    Код:
    //======================================================================
    //			
    // 		        Команды RTI, RTT (000002, 000006)
    // 
    //======================================================================
    
    0x05:						(RTT)			// Для команды RTT уснанавливается флаг DC_RTT (уточнить действие)
    			RA=R6			IO_RD, IO_IN		// Инициировать цикл чтения шины в регистр BRD
    			R6=R6+2
    //----------------------------------------------------------------------   (обработка частично совмещена с RSEL, MFUS)		
    0x27: 						WAIT_BRD		// Ожидание готовности чтения BRD
    			PC1=PC2=BRD		GET_STATE (XQ15&XQ14&XQ13) // Если PC2&0xE000 = 0xE000, то BRA=1, иначе BRA=0
    //----------------------------------------------------------------------			
    0x19:	if (BRA=1)							// Если BRA=1 (PC2>=0xE000)
    			RA=R6			IO_RD, IO_IN		// Инициировать цикл чтения шины в регистр BRD
    			R6=R6+2
    			GOTO 0x09
    	else								// Иначе
    			RA=R6			IO_RD, IO_IN		// Инициировать цикл чтения шины в регистр BRD
    			R6=R6+2
    			GOTO 0x31
    //----------------------------------------------------------------------   (для PC1>=0xE000)			
    0x09:						WAIT_BRD		// Ожидание готовности чтения BRD
    			PSW=BRD
    			GOTO 0x23
    //----------------------------------------------------------------------   (для PC1<0xE000)	
    0x31:						WAIT_BRD		// Ожидание готовности чтения BRD
    			PSW.B=BRD
    //----------------------------------------------------------------------   (обработка совмещена со START)		
    0x23:			ACC=ACC						// Зачем? Какие-то процессы должны завершится?
    //----------------------------------------------------------------------   (завершение обработки определенной группы команд)			
    0x25:			ACC=ACC			PLI_REQ			// Запросить проверку запросов на прерывание
    			GOTO 0x21					// Перейти на команду выборки следующей некэшированной инструкции
    Последний раз редактировалось Titus; 24.11.2020 в 23:02.

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

    Alex_K(24.11.2020), nzeemin(24.11.2020)

  8. #1417

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

    По умолчанию

    По поводу RTT - если в новом PSW установлен бит T, то после исполнения RTT проверки запросов на прерывание не производится, следующая команда обязательно исполняется. Такой же эффект и при исполнении команды STEP, но там нет условия в установке бита T.

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

    Titus(24.11.2020)

  9. #1418

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

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    По поводу RTT - если в новом PSW установлен бит T, то после исполнения RTT проверки запросов на прерывание не производится, следующая команда обязательно исполняется. Такой же эффект и при исполнении команды STEP, но там нет условия в установке бита T.
    Похоже, но пока что еще не разбирался.

    Интересно, что после составления карты ПЛМ, разработчики пропустили ее через оптимизатор, который выкинул проверку всех незначащих бит, избавившись при этом от лишних транзисторов. Меньше транзисторов - меньше ток.
    Однако, для анализа это более сложно, чем полное декодирование с 'невыкинутыми' битами.

    Для примера, тот же RTI, RTT имеет маску в ПЛМ: ....0...0..00.10, а не 0000000000000.10
    Оставлены только те биты, которые позволяют отличить RTI, RTT от других инструкций в микрокоманде 0x05.
    Зато сколько лишних транзисторов освободилось)

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

    Микропрограммы для START и STEP:

    START:
    Код:
    //======================================================================
    //			
    // 		        Команда START (000010-000013)
    // 
    //======================================================================
    	
    0x05:			PC1=PC2=PC						
    //----------------------------------------------------------------------	
    0x27:			PSW=CPSW
    //----------------------------------------------------------------------   (обработка совмещена со RTI, RTT)		
    0x23:			ACC=ACC						// Зачем? Какие-то процессы должны завершится?
    //----------------------------------------------------------------------   (завершение обработки определенной группы команд)			
    0x25:			ACC=ACC			PLI_REQ			// Запросить проверку запросов на прерывание
    			GOTO 0x21					// Перейти на команду выборки следующей некэшированной инструкции


    STEP:
    Код:
    //======================================================================
    //			
    // 		        Команда STEP (000014-000017)
    // 
    //======================================================================
    	
    0x05:			PC1=PC2=PC						
    //----------------------------------------------------------------------	
    0x27:			PSW=CPSW
    //----------------------------------------------------------------------  
    0x35:			NO ALU			PI_STB RI0=1		// Управление: Сообщить последующей команде выборки инструкции, что нет запроса на прерывание 
    //----------------------------------------------------------------------  
    0x09:			RA=PC1			IO_RD, IO_CMD		// Инициировать цикл чтения шины в регистр BRI (инициализация кэширования инструкции)
    			PC1=PC2=PC1+2					
    			GOTO 0x01					// Перейти на команду выборки следующей инструкции
    Последний раз редактировалось Titus; 25.11.2020 в 01:50.

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

    Alex_K(24.11.2020)

  10. #1419

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Микропрограммы для START и STEP:
    А PC1 это и есть CPC?

  11. #1420

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

    По умолчанию

    Немного подправил предыдущие микропрограммы.
    Везде, где обновляется PC1, там же обновляется и PC2.

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

    Цитата Сообщение от Alex_K Посмотреть сообщение
    А PC1 это и есть CPC?
    Наоборот. CPC - это PC. Исправил.

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

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

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

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

Ваши права

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