User Tag List

Показано с 1 по 10 из 52

Тема: Extended Instructions Set (EIS): MUL, DIV, ASH, ASHC

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    19.04.2013
    Адрес
    г. Чебоксары
    Сообщений
    613
    Спасибо Благодарностей отдано 
    18
    Спасибо Благодарностей получено 
    176
    Поблагодарили
    136 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Не проходит сдаточный тест 791402.
    Зацикливается при выполнении
    Код:
    mov #77777,R5
    mul #100000,R5

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

  3. #2

    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,724
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    406
    Поблагодарили
    257 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от gid Посмотреть сообщение
    Не проходит сдаточный тест 791402.
    Зацикливается при выполнении
    Код:
    mov #77777,R5
    mul #100000,R5
    Интересно, а как это должно обрабатываться? 100000 – некорректное знаковое число: если старший бит = 1, то число отрицательное, инвертируем и прибавляем 1, чтобы получить положительное, и вновь имеем отрицательное 100000.
    manwe.pdp-11.ru

  4. #3

    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,973
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    321
    Спасибо Благодарностей получено 
    317
    Поблагодарили
    240 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Manwe Посмотреть сообщение
    Интересно, а как это должно обрабатываться? 100000 – некорректное знаковое число:
    с чего вдруг бы? вполне корректное

    Цитата Сообщение от Manwe Посмотреть сообщение
    если старший бит = 1, то число отрицательное, инвертируем и прибавляем 1, чтобы получить положительное, и вновь имеем отрицательное 100000.
    нет, имеем положительное беззнаковое
    Прихожу без разрешения, сею смерть и разрушение...

  5. #4

    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,724
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    406
    Поблагодарили
    257 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    нет, имеем положительное беззнаковое
    Согласно Wikipedia (на примере 8-битных чисел), это -128: https://ru.wikipedia.org/wiki/Дополнительный_код
    Последний раз редактировалось Manwe; 07.02.2020 в 09:17.
    manwe.pdp-11.ru

  6. #5

    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,973
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    321
    Спасибо Благодарностей получено 
    317
    Поблагодарили
    240 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Manwe Посмотреть сообщение
    Согласно Wikipedia (на примере 8-битных чисел), это -128: https://ru.wikipedia.org/wiki/Дополнительный_код
    иии что? и оно же беззнаковое +128 (или на быкашках дополнительный код обязателен в любых обстоятельствах под угрозой четвертования?)
    Прихожу без разрешения, сею смерть и разрушение...

  7. #6

    Регистрация
    19.04.2013
    Адрес
    г. Чебоксары
    Сообщений
    613
    Спасибо Благодарностей отдано 
    18
    Спасибо Благодарностей получено 
    176
    Поблагодарили
    136 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Manwe Посмотреть сообщение
    Интересно, а как это должно обрабатываться?
    Так, чтобы не происходило зацикливания, вот ваш код:
    Код:
    305 		CLR R1
    306 		CLR R0				; R0_R1 = R4_R5 * R2
    307 3:		ASR R2				; main loop
    308 		BEQ 6
    309 		BCC 5
    310 4:			ADD R5,R1
    311 			ADC R0
    312 			ADD R4,R0
    313 5:		ASL R5
    314 		ROL R4
    315 		BR 3				; end of main loop
    316 6:		BCC 7
    317 			ADD R5,R1
    318 			ADC R0
    319 			ADD R4,R0
    320 
    321 7:		TST R0				; high 16 bit
    причина зацикливания в строке 307, команда ASR R2, потому что если на входе в R2 попадётся отрицательное число, то R2 никогда не станет 0 и условие выхода из цикла не выполнится.
    Её надо заменить на CLC ROR R2. А в целях оптимизации CLC можно пропустить, т.к. при входе в цикл бит С обнуляется командой CLR R0 в строке 306, а внутри цикла команда ROL R4 в строке 314 всегда вытесняет в бит C число 0.

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

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

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

Похожие темы

  1. Ответов: 0
    Последнее: 29.08.2017, 14:06
  2. Sector II - Extended
    от Splinter в разделе Музыка
    Ответов: 7
    Последнее: 07.02.2014, 06:45
  3. EXTENDED MEMORY DETECTION
    от VELESOFT в разделе Память
    Ответов: 1
    Последнее: 04.04.2010, 22:50
  4. gfx extended :)
    от riskej в разделе Графика
    Ответов: 12
    Последнее: 06.08.2008, 17:58
  5. Fast 48x48 MUL | DIV
    от Sinus в разделе Программирование
    Ответов: 6
    Последнее: 05.07.2005, 17:00

Ваши права

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