User Tag List

Показано с 21 по 30 из 54

Тема: Быстрое умножение на 10000

Древовидный режим

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

    Регистрация
    16.12.2014
    Адрес
    г. Ожерелье
    Сообщений
    769
    Спасибо Благодарностей отдано 
    252
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    42 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Быстрое умножение на 10000

    С помощью экспертов по Амигам вышел на отличный алгоритм для такого умножения. К1801ВМ1 несколько неуклюж с таблицами, что не позволяет сделать на нем быстрое табличное умножение как на z80 или 6502. Кстати, мотороловские процессоры (680x, 680x0) тут также неуклюжи. Поэтому с 68020 иногда быстрее использовать сдвиги, чем довольно быстрое (28 тактов) аппаратное умножение. Решил поделиться. Как никак, а красота. Константа data умножается беззнаково на 10000, результат в r2 - high, r3 - low.
    Код:
             mov #data,r0
             clr r4
             clr r2
             mov r0,r3 
             asl r3
             rol r2            
             asl r3
             rol r2
             asl r3
             rol r2
             sub r3,r0
             sbc r4
             sub r2,r4
             asl r3
             rol r2
             sub r3,r0
             sbc r4
             sub r2,r4
             sub r3,r0
             sbc r4
             sub r2,r4
             swab r0
             swab r4
             clrb r4
             bisb r0,r4
             clrb r0
             sub r0,r3
             sbc r2
             sub r4,r2
    С аппаратным умножением (K1801ВМ1Г), конечно, короче, но не факт, что быстрее.
    Код:
             mov #data,r2
             mul #10000,r2
             bpl bypass
             add #10000,r2
    bypass
    Интересно узнать, какое и насколько быстрее. Прикрепляю программки для тестирования для БК0010 и 0011. C эмулятором аппаратное значительно быстрее, но там эмулируется какая-то PDP-11 с более быстрым, чем у ВМ1Г умножением. Программка с приведённым выше программным умножением с БК0011 под медленным RT-11 обогнала быстрый американский Коммодор-64 (европейский медленнeе) под максимально быстрым бейсиком в ПЗУ - http://litwr2.atspace.eu/pi/pi-spigot-benchmark.html. А с аппaратным возможно обогнала бы и MSX-2.
    pi-bk.zip

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

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

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

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

Похожие темы

  1. Деление/умножение
    от Serdjuk в разделе Программирование
    Ответов: 51
    Последнее: 25.04.2018, 15:54
  2. Быстрое вращение в 3Д
    от TmK в разделе Программирование
    Ответов: 26
    Последнее: 24.05.2009, 04:01
  3. Быстрое самоуничтожение
    от Barmaley_m в разделе Программирование
    Ответов: 13
    Последнее: 25.09.2007, 09:20
  4. Процедуры на асме (умножение деления)
    от gres8 в разделе Программирование
    Ответов: 3
    Последнее: 25.01.2007, 10:26

Ваши права

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