User Tag List

Страница 10 из 31 ПерваяПервая ... 67891011121314 ... ПоследняяПоследняя
Показано с 91 по 100 из 332

Тема: Вычисление числа Пи на ассемблере

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

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

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

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Первое, что приходит в голову - деление. Тут и команды вычитания регистровых пар пригодятся (для ускорения восстановления остатка) и дополнительные регистры.
    Слышал от знатоков z80, что быстрые программы IX, IY не используют. 16-битная разность почти бесполезна из-за отсутствия беспереносного вычитания, а ставить перенос на z80 морочно - проще складывать дополнительные коды. Система команд z80 определенный лидер конкурса некрасоты. Разве только второй набор регистров... Но их лучше возможно к прерываниям прикрепить.
    Вот, например, деление на z80 - http://cpcwiki.eu/index.php/Programm...32bit_division - другого там раньше не было. Оно раз в 5-6 (!) медленнее DIV32 в программе для Радио-РК (pirk)! Кстати последний вариант pirk - это просто шедевр какой-то.
    Пора посмотреть на сверхскоростной pi.rar... Но он, как понял, в отличие от pirk, 1000 знаков не считает? И где же он этот сверхскоростной на 7 сек?
    Кстати программка на AMSTRAD CPC6128 с DIV32 и с умножением с таблицами на 16 KB сто знаков отсчитывает за 5.3 сек, 1000 соответственно 5.3*10^2 = 8м 50с - явно можно сделать получше, все же процессор примерно в два раза помощнее...
    Возник вопрос. Зачем генерируете таблицы? Проще же готовыми их вставить или кто-то с кассеты грузит? ;-)
    Цитата Сообщение от perestoronin Посмотреть сообщение
    Для каждой точности есть свой вариант уточненной формулы Мэчина.
    Эта формула вроде уже считается устаревшей, даже у Гаусса была лучше. А кроме того, в 90-е пооткрывали много поцифирных формул, сходящися по 10^n и лучше...
    И кроме того, если соревнования между архитектурами, то зачем разные алгоритмы? Ясно, что система с худшим железом легко обгонит лучшую с негодным алгоритмом. Например, Радио-РК легко обгонит лучший суперкомпьютер, который будет считать число Фибоначчи по определению. А если объявить соревнования алгоритмов, то зачем тут ретроплатформы? Есть уже, например, http://benchmarksgame.alioth.debian.org/
    Последний раз редактировалось litwr; 14.11.2015 в 19:36.

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

  3. #2

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,930
    Спасибо Благодарностей отдано 
    107
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от litwr Посмотреть сообщение
    И где же он этот сверхскоростной на 7 сек?
    Вот вариант без таблиц, но он 8.89 сек. pi.rar

  4. #3

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,424
    Спасибо Благодарностей отдано 
    768
    Спасибо Благодарностей получено 
    2,375
    Поблагодарили
    1,322 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Насчет переносов могу привести такой пример. Несколько лет назад с помощью рекомпилятора Tim0xи адаптнул распаковщик megalz с z80 на 8080. Потом оптимизировал его и все такое. А потом b2m по сишному распаковщику написал распаковщик для 8080, который (если не изменяет память) в разы быстрее. Да, там тоже можно пару байтов и пару тактов скинуть, но в разы его уже не улучшить. Это я к тому, что с си вполне можно написать нормальную программу для 8080, что уже не раз демонстрировал b2m, и, с другой стороны, с асма на асм можно довольно неудачно перенести.

  5. #4

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,424
    Спасибо Благодарностей отдано 
    768
    Спасибо Благодарностей получено 
    2,375
    Поблагодарили
    1,322 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    pi.rar - зачетно. Я собирался модифицировать первоначальный spigot подобным образом, а ты уже сделал.

  6. #5

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,424
    Спасибо Благодарностей отдано 
    768
    Спасибо Благодарностей получено 
    2,375
    Поблагодарили
    1,322 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    b2m ленится оптимизировать "по-мелкому", а мне было интересно. Заменил в последнем pi.rar умножение и деление:
    100 цифр - 12868015 тактов - 7.24 сек
    536 цифр (из них 535 верно) - 351958021 тактов - 3 мин 18 сек
    Просто охренеть. И там еще есть резервы, я их не трогал, тупо заменил процедуры. А так явно можно 100 знаков меньше чем за 7 секунд посчитать. Как бороться с b2mом?

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

    Уточню - это без учета времени расчета таблицы умножения

  7. #6

    Регистрация
    25.11.2007
    Адрес
    Симферополь
    Сообщений
    2,164
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    b2m ленится оптимизировать "по-мелкому", а мне было интересно. Как бороться с b2mом?
    Самый простой вариант - добавить ему пурген в чай.

    А вообше - очень интересная тема - с удовольствием слежу. пока нет возможности проверить или поправить на 8ми битке.
    Amiga 1200+Blizzard 1260 72 Mb+Mtek 68030,Compozit 128, Leningrad 2,
    Atari STE 1040,ZX Spectrum +2,Pentagon 48, Speccy2007 - 2 , ATAS 256k.
    ZX Evo 4Mb- в строю.
    Speccy2010 v1
    Специалист (пока готовлюсь к восстановлению).
    Это все мое!
    Родное!
    Все люблю на свете я! Это родина моя!

  8. #7

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,930
    Спасибо Благодарностей отдано 
    107
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Как бороться с b2mом?
    Исключительно личным примером

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

    Цитата Сообщение от balu_dark Посмотреть сообщение
    добавить ему пурген в чай.
    Э... проверено на личном опыте?

  9. #8

    Регистрация
    25.11.2007
    Адрес
    Симферополь
    Сообщений
    2,164
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    Э... проверено на личном опыте?
    Не Прочитано в книжках. Как ненасильственный метод борьбы Ибо согласно нашему уголовному кодексу - "публичные призывы к ...." малость наказуемы
    А ivagor к тому моменту не уточнил - что он хочет побороть.
    Amiga 1200+Blizzard 1260 72 Mb+Mtek 68030,Compozit 128, Leningrad 2,
    Atari STE 1040,ZX Spectrum +2,Pentagon 48, Speccy2007 - 2 , ATAS 256k.
    ZX Evo 4Mb- в строю.
    Speccy2010 v1
    Специалист (пока готовлюсь к восстановлению).
    Это все мое!
    Родное!
    Все люблю на свете я! Это родина моя!

  10. #9

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,424
    Спасибо Благодарностей отдано 
    768
    Спасибо Благодарностей получено 
    2,375
    Поблагодарили
    1,322 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Во избежание недоразумений заменю формулировку своего риторического вопроса на более корректную - Как соревноваться с b2mом? Для себя у меня есть отмазка - я (практически) не программист.
    Интересно было бы увидеть реализацию для 8080 более эффективного алгоритма.

  11. #10

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,424
    Спасибо Благодарностей отдано 
    768
    Спасибо Благодарностей получено 
    2,375
    Поблагодарили
    1,322 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Насчет выкладывания семисекундного+ варианта - я тут обещал больше не заниматься (по крайней мере в этой теме ) паразитической оптимизацией программ b2mа, так что выкладывать очередную версию было бы непоследовательно и нехорошо. Правильнее было бы даже и не писать про нее, но эмоции переполняли. При желании быструю версию можно собрать самостоятельно, нужно только заменить умножение и деление. Умножение можно взять из pirk20 (там еще можно таблицу расположить с 0000h и избавиться от лишнего inr). Деление проще взять из предыдущего pirk, в 20 уже немного иначе сделано. Если вдруг сам реализую какой-нибудь другой вариант расчета, то выложу, но это очень маловероятно.

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

    Кстати, насчет реализации умножения и деления на z80 - не новая, но очень хорошая статья. Думаю про нее большинство знает, но может кто не читал. И, конечно, то, что там написано, вполне можно адаптировать для других процессоров.

Страница 10 из 31 ПерваяПервая ... 67891011121314 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Арифметические процедуры на ассемблере
    от spensor в разделе Программирование
    Ответов: 27
    Последнее: 13.05.2017, 20:56
  2. Мнемокоманды и числа.
    от ALKO в разделе Программирование
    Ответов: 0
    Последнее: 15.02.2014, 03:49
  3. try-catch на ассемблере z80
    от siril в разделе Программирование
    Ответов: 22
    Последнее: 30.10.2012, 21:17
  4. Определение числа сторон
    от mungo в разделе Внешние накопители
    Ответов: 1
    Последнее: 16.03.2012, 18:06

Метки этой темы

Ваши права

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