Важная информация

User Tag List

Страница 158 из 174 ПерваяПервая ... 154155156157158159160161162 ... ПоследняяПоследняя
Показано с 1,571 по 1,580 из 1740

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

  1. #1571

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

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    А не влияет ли наличие RS-триггера на исполнение других команд EIS?
    Нет, не влияет. Он стоит только в цепи отвечающей за сдвиг влево в расширенной арифметике.
    В первой итерации он всегда сбрасывается, а в остальных устанавливается, если была смена знака.

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

    Alex_K(06.12.2020)

  2. #1572

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

    По умолчанию ВМ2: ALU Rs,dd

    Двухоперандные команды с регистром источником формата ALU Rs,dd.

    В эту же группу входят команды расширенной арифметики формата EALU Rd,ss.

    MOV(B), BIS(B), BIC(B), ADD, SUB, CMP(B), BIT(B), XOR,
    MUL, DIV, ASH, ASHC:

    Код:
    //======================================================================
    //			
    // 	   	      Oперации с двумя операндами вида Rs,nn
    //
    //  MOV(B), BIS(B), BIC(B), ADD, SUB, CMP(B), BIT(B),
    //  XOR, MUL, DIV, ASH, ASHC
    //
    //  step=1 для байтовых команд, если dd<>R6 и dd<>R7
    //  step=2 для всх остальных команд
    //
    //  Циклы шины IO_X001 для:
    //
    //  CMP(B), BIT(B), MUL, DIV, ASH, ASHC
    //  Read (IO_RD, IO_IN) - Инициировать цикл чтения шины в регистр BRD
    //
    //  MOV:
    //  Write (IO_WR) - Инициировать цикл записи BRD на шину 
    //
    //  MOVB, BIS(B), BIC(B), ADD, SUB, XOR:
    //  R-M-W (IO_RD, IO_WR, IO_IN) - Инициировать цикл чтения шины в регистр BRD
    //				  с последующим циклом записи по готовности BRD 
    // 
    //======================================================================
    0x2B:			RS=Rs
    //---------------------------------------------------------------------- 
    0x17:	if (Rn)		RA=Rn			IO_X001			// Инициировать цикл шины
    			Rn=Rn
    			GOTO 0x33					
    	
    	if (Rn)+ and (RI0=0)						// Если Rn<>R7		
    			RA=Rn			IO_X001			// Инициировать цикл шины
    			Rn=Rn+step
    			GOTO 0x33
    			
    	if (Rn)+ and (RI0=1) and (IX0=1)				// Если Rn=R7, и работа со словом
    			PC1=PC2			DISABLE_CACHE		// Запретить кэш и включить режим использования BIR как данных
    									// Фактически PC1=PC1+2
    			BRD=BIR			IO_X001			// Подготовить, но не начинать цикл шины
    			GOTO 0x33
    			
    	if (Rn)+ and (RI0=1) and (IX0=0)				// Если Rn=R7, и работа с байтом
    			PC1=PC2			DISABLE_CACHE		// Запретить кэш и включить режим использования BIR как данных
    									// Фактически PC1=PC1+2
    			RA=PC1-2		IO_X001			// Инициировать цикл шины
    			GOTO 0x33			
    			
    	if -(Rn)	Rn=Rn-step
    			RA=Rn			IO_X001			// Инициировать цикл шины		
    			GOTO 0x33
    	
    	if @-(Rn)	Rn=Rn-2			
    			RA=Rn			IO_RD, IO_IN		// Инициировать цикл чтения шины в регистр BRD
    			GOTO 0x22
    						
    	if @(Rn)+ and (RI0=0)						// Если Rn<>R7
    			Rn=Rn+2
    			RA=Rn			IO_RD, IO_IN		// Инициировать цикл чтения шины в регистр BRD
    			GOTO 0x22
    	
    	if @(Rn)+ and (RI0=1)						// Если Rn=R7
    			PC1=PC2			DISABLE_CACHE		// Запретить кэш и включить режим использования BIR как данных
    									// Фактически PC1=PC1+2
    			RA=BIR			IO_X001			// Инициировать цикл шины
    			GOTO 0x33
    			
    	if X(Rn)	PC1=PC2			DISABLE_CACHE		// Запретить кэш и включить режим использования BIR как данных
    			RA=Rn+BIR		IO_X001			// Инициировать цикл шины
    			GOTO 0x33
    			
    	if @X(Rn)	PC1=PC2			DISABLE_CACHE		// Запретить кэш и включить режим использования BIR как данных
    			RA=Rn+BIR		IO_RD, IO_IN		// Инициировать цикл чтения шины в регистр BRD
    		
    //----------------------------------------------------------------------   Прочитана ячейка с адресом операнда			
    0x22:			PC1=PC2			DISABLE_CACHE		// Запретить кэш и включить режим использования BIR как данных
    						WAIT_BRD		// Ожидание готовности чтения BRD
    			RA=BRD			IO_X001			// Инициировать цикл шины
    						ENABLE_CACHE		// Разрешить кэш
    	
    //----------------------------------------------------------------------   Операнд прочитан из памяти, если цикл шины Read или RMW			
    0x33:						WAIT_BRD		// Ожидание готовности чтения BRD
    	if MUL,DIV,ASH(C)
    			ACC=BRD
    	if MUL		GOTO 0x18					// Если MUL, то перейти на шаг 0x18 микропрограммы выполнения умножения
    	if DIV		GOTO 0x1A					// Если DIV, то перейти на шаг 0x1A микропрограммы выполнения деления	
    	if ASH(C)	GOTO 0x1A					// Если ASH(C), то перейти на шаг 0x1A микропрограммы выполнения циклического сдвига
    
    			ALU RS,BRD					// Операции ALU из шага 0x3B, в качестве приемника BRD, в качестве источника RS
    			
    									// Если используется цикл записи Write или RMW, то по записи в BRD, продолжается цикл записи
    						ENABLE_CACHE		// Разрешить кэш
    						PLI_REQ			// Запросить проверку запросов на прерывание
    	if X(Rn) or @X(Rn) or (Rn=R7)					// Если использовали адресацию по R7, то
    			GOTO 0x21					// Перейти на команду выборки следующей некэшированной инструкции
    	else								// Иначе
    			GOTO 0x01					// Перейти на команду выборки следующей инструкции

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

    Alex_K(09.12.2020), hobot(09.12.2020)

  3. #1573

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Двухоперандные команды с регистром источником формата ALU Rs,dd.
    Остались двухоперандные команды вида ALU ss,dd?

  4. #1574

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

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Остались двухоперандные команды вида ALU ss,dd?
    Да, только они.

  5. #1575

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

    По умолчанию

    Кстати, а слабо исходники микрокода 1801 сгенерить? А потом собрать своим метаассемблером?
    Меня это интересует давно, я не понимал как это сделано. Сейчас, по итогам М4, у меня соображения появились, что микрокод для серии 1801 писался с гораздо более широким выходным словом, на которое навесили нужные мультиплексоры и согласователи для стыковки с АЛУ и потом это все оптимизировали в матрицу машинным способом. Потому что разобрать и проанализировать матрицу - это еще понять можно, но синтез руками - сделать сложно. Так что вероятность процентов 90 что так и было. На момент разработки 1801 метассмеблеры уже были, секционники вовсю проектировались, оптимизировать тоже понятно как, так что это именно оно - недостающее звено. Надо Отрохова и Подорова поспрашивать, как оно реально было.

  6. #1576

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

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    Кстати, а слабо исходники микрокода 1801 сгенерить? А потом собрать своим метаассемблером?
    Не слабо, но для этого надо реверсить ВМ1.
    А с меня уже и ВМ2 достаточно пока что. Это вам не бином Ньютона)

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

  8. #1577

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Не слабо, но для этого надо реверсить ВМ1.
    Зачем? Можно и ВМ2, он предположительно точно по тому же маршруту делался.

  9. #1578

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

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    Зачем? Можно и ВМ2, он предположительно точно по тому же маршруту делался.
    Тогда я не понимаю, что означает 'сгенерить исходники'.
    Я и так расписал практически весь микрокод в самом, что ни на есть, понятном виде.

  10. #1579

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Тогда я не понимаю, что означает 'сгенерить исходники'.
    Я и так расписал практически весь микрокод в самом, что ни на есть, понятном виде.
    Ну что такое ассемблерный исходник представляешь? А что такое ассемблер? Тут то же самое, написать микрокод, в виде исходника, как я сделал для М4, и написать компилятор, на выходе получить сгенерированное состояние перемычек матрицы - P и SoP.

  11. #1580

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

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    Ну что такое ассемблерный исходник представляешь? А что такое ассемблер? Тут то же самое, написать микрокод, в виде исходника, как я сделал для М4, и написать компилятор, на выходе получить сгенерированное состояние перемычек матрицы - P и SoP.
    Это лишняя работа. Зачем, если и так все уже расшифровано.
    Я и это-то хочу поскорее закончить, ибо надоело уже)

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

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

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

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

Похожие темы

  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

Ваши права

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