User Tag List

Страница 44 из 157 ПерваяПервая ... 404142434445464748 ... ПоследняяПоследняя
Показано с 431 по 440 из 1564

Тема: Программирование на УКНЦ как?

  1. #431

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,805
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    Да. Главное не забыть, что обратное отсюда не следует - если результат сменил знак, отсюда не следует что установлен V
    Это нас не волнует, поскольку мы используем "готовый" признак V, который процессор формирует именно тогда, когда надо. Наша задача лишь в том, чтобы определить тот случай, когда этот признак устанавливается чётное число раз, а значит - должен быть сброшен, поскольку чётное изменение знака оставляет его НЕИЗМЕННЫМ.

    Так ещё понятнее :)

    ...

    Максимальным быстродействием (на мой взгляд) обладает древовидная версия алгоритма, которую предлагаю обсудить:

    Код:
    $Add32:
    	Add	L1, L2
    	BEq	LZ
    	AdC	H2
    	BVS	LV
    	BCS	LC
    	Add	H1, H2
    	ClZ
    	Return
    LC:
    	Add	H1, H2
    	SeC
    	ClZ
    	Return
    LV:
    	BCS	LVC
    	Add	H1, H2
    	BVS	HV
    	SeV
    	ClZ
    	Return
    LVC:
    	Add	H1, H2
    	SeC
    	BVS	HV
    	SeV
    	ClZ
    	Return
    HV:
    	<ClZ>!<ClV>
    	Return
    LZ:
    	AdC	H2
    	BVS	LZV
    	BCS	LZC
    	Add	H1, H2
    	Return
    LZC:
    	Add	H1, H2
    	SeC
    	Return
    LZV:
    	BCS	LZVC
    	Add	H1, H2
    	BVS	HZV
    	SeV
    	Return
    LZVC:
    	Add	H1, H2
    	SeC
    	BVS	HZV
    	SeV
    	Return
    HZV:
    	ClV
    	Return
    Последний раз редактировалось Patron; 09.12.2011 в 05:28.

  2. #432

    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,850
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    289
    Поблагодарили
    233 сообщений
    Mentioned
    30 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Думать лень. CLZV требует дополнительного описания.
    Можно сделать без описания в виде <CLZ>!<CLV>
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

  3. #433

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,805
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Для завершения доказательства правильности алгоритма необходимо убедиться в невозможности последовательного возникновения следующих двух событий:

    1. Инкремент 16-разрядного приёмника приводит к изменению его знака без установки флага V.

    2. Прибавление 16-разрядного источника приводит к установке флага V.

  4. #434

    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,850
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    289
    Поблагодарили
    233 сообщений
    Mentioned
    30 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Для завершения доказательства правильности алгоритма необходимо убедиться в невозможности последовательного возникновения следующих двух событий:

    1. Инкремент 16-разрядного приёмника приводит к изменению его знака без установки флага V.

    2. Прибавление 16-разрядного источника приводит к установке флага V.
    Инкремент устанавливает V только в одном случае: 77777 -> 100000.
    Другой случай изменения знака дает 0 в результате.

    ---------- Post added at 08:30 ---------- Previous post was at 08:25 ----------

    Ну а прибавление к нулю соответственно V не дает никогда.
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

  5. #435

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,805
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    Инкремент устанавливает V только в одном случае: 77777 -> 100000.
    Другой случай изменения знака дает 0 в результате.
    Поскольку при 0 в результате никакое каскадное суммирование не сможет установить флаг V - верность алгоритма доказана.

  6. #436

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,805
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Да, мы ещё забыли случай, когда положительное 16-разрядное число прибавляется к 0100000 с изменением знака приёмника, но такое явно невозможно во всём диапазоне от 0 до 77777.

    ---------- Post added at 11:29 ---------- Previous post was at 10:37 ----------

    Цитата Сообщение от Alex_K Посмотреть сообщение
    сложение в PDP-11 только 16-разрядное, так что бит 8 - это и есть бит C, а с V подумать надо, тут его только по алгоритму вычислять надо.
    Когда байты, используемые в эмуляторе для хранения 8-разрядных значений источника и приёмника - имеют нечётные адреса, а предыдущие байты с чётными адресами равны нулю - тогда 16-разрядное сложение слов с нечётными адресами будет давать правильный 8-разрядный результат с корректной установкой всех флагов в PSW.

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

  8. #437

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

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Да, мы ещё забыли случай, когда положительное 16-разрядное число прибавляется к 0100000 с изменением знака приёмника, но такое явно невозможно во всём диапазоне от 0 до 77777.
    Каким образом можно прибавить положительное 16-разрядное число к 0x8000 с изменением знака, если самое большое положительное число - это 0x7FFF?

  9. #438

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,805
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Каким образом можно прибавить положительное 16-разрядное число к 0x8000 с изменением знака, если самое большое положительное число - это 0x7FFF?
    Если бы такое было возможно - Ваш алгоритм определения признака V не был бы исчерпывающим.

    Но такое невозможно, поэтому использованный алгоритм определения признака V предусматривает все возможные варианты результатов операций ADC H2 и ADD H1,H2.

    Кстати, поскольку предложенный выше древовидный алгоритм не имеет внутренних состояний (т.е. не использует переменные) - для тестирования его правильности необходимо и достаточно, чтобы однократное выполнение каждой ветви дало правильный результат.

    Так..

    ---------- Post added at 15:22 ---------- Previous post was at 14:23 ----------

    Не так - нужно гарантировать исчерпывающий охват всех комбинаций признаков. Иначе даже алгоритм с единственной ветвью может быть признан правильным.
    Последний раз редактировалось Patron; 09.12.2011 в 16:24.

  10. #439

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

    По умолчанию

    Подскажите пожалуйста, как такую вот конструкцию на МАКРО-11 правильно соорудить?
    Код:
    PROCEDURE TTYOUT(N:INTEGER);
     CONST R=200B;
     VAR A ORIGIN 177564B, D ORIGIN 177566B:INTEGER;
    BEGIN
     WHILE (A AND R)=0 DO;
     D:=N;
    END; /* THIS PROCEDURE WAS COPIED FROM HPIC.PAS */
    Спасибо )

    ---------- Post added at 17:09 ---------- Previous post was at 15:47 ----------

    Отвечаю сам себе )))

    Код:
    ...
    PROCEDURE TTYOUT(N:INTEGER);
     CONST R=200B;
     VAR A ORIGIN 177564B, D ORIGIN 177566B:INTEGER;
    BEGIN
     WHILE (A AND R)=0 DO;
     D:=N;
    END; /* THIS PROCEDURE WAS COPIED FROM HPIC.PAS */
    
    ...
    1$:	CLR	@#177564
    	TST	@#177564
    	BEQ	1$
    	(вот как эта константа R (ЧТО ЭТО - УСЛОВИЕ?СОСТОЯНИЕ? ? я "тугой-тугой!")
    	MOVE	N(SP), @#177566 
    КАК ТО ТАК НАВЕРНОЕ?
    Архив программ для УК-НЦ, ДВК и БК.

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

  11. #440

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,805
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Код:
    CONST R=200B; 
    VAR A ORIGIN 177564B:INTEGER;
    WHILE (A AND R)=0 DO;
    
    Эквивалентно:
    
    1$:	BIT	#200, @#177564
    	BEQ	1$
    
    Но проще так:
    
    1$:	TSTB	@#177564
    	BPL	1$

Страница 44 из 157 ПерваяПервая ... 404142434445464748 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Программирование на Эмуляторе. Возможно ли это?
    от Toxic в разделе Программирование
    Ответов: 10
    Последнее: 20.01.2008, 19:20
  2. Программирование Altera и JTAG
    от Mikka_A в разделе Несортированное железо
    Ответов: 7
    Последнее: 18.01.2008, 09:07
  3. Программирование и софтмейк на NES
    от Splinter в разделе Nintendo
    Ответов: 7
    Последнее: 30.06.2006, 04:31

Ваши права

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