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

User Tag List

Страница 3 из 32 ПерваяПервая 1234567 ... ПоследняяПоследняя
Показано с 21 по 30 из 312

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

  1. #21
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,550
    Спасибо Благодарностей отдано 
    1,213
    Спасибо Благодарностей получено 
    1,748
    Поблагодарили
    680 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Вашу бы энергию на написание крутых демо-эффектов или хотя бы игр)

  2. #22
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,806
    Спасибо Благодарностей отдано 
    642
    Спасибо Благодарностей получено 
    1,773
    Поблагодарили
    1,023 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ё-маё, b2m уже успел и умножение на 10 оптимизнуть

  3. #23
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,846
    Спасибо Благодарностей отдано 
    83
    Спасибо Благодарностей получено 
    227
    Поблагодарили
    166 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от perestoronin Посмотреть сообщение
    Для Z80 расчет числа Пи
    Интересно, что деление выполнено обычным циклом с вычитанием. Видимо для данного алгоритма это быстрее (т.к. результат деления маленький). Можно попробовать и с моим кодом так поиграть...

    ---------- Post added at 17:29 ---------- Previous post was at 17:21 ----------

    Цитата Сообщение от ivagor Посмотреть сообщение
    ё-маё, b2m уже успел и умножение на 10 оптимизнуть
    Развернул таки цикл в последовательность
    Кстати, один из множителей всегда меньше 256, иначе было бы переполнение.

    ---------- Post added at 17:32 ---------- Previous post was at 17:29 ----------

    Я думаю, если кардинальных оптимизаций больше не будет, на этом и остановимся.

  4. #24
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,806
    Спасибо Благодарностей отдано 
    642
    Спасибо Благодарностей получено 
    1,773
    Поблагодарили
    1,023 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    Кстати, один из множителей всегда меньше 256, иначе было бы переполнение.
    С учетом этого еще минус почти секунда.

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

  5. #25
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,806
    Спасибо Благодарностей отдано 
    642
    Спасибо Благодарностей получено 
    1,773
    Поблагодарили
    1,023 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    деление выполнено обычным циклом с вычитанием. Видимо для данного алгоритма это быстрее
    Да, быстрее: 35742085 тактов - 20.1 сек

  6. #26
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,806
    Спасибо Благодарностей отдано 
    642
    Спасибо Благодарностей получено 
    1,773
    Поблагодарили
    1,023 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Остановился на 34405448 тактов - 19.35 сек
    Вложения Вложения
    • Тип файла: zip pirk3.zip (1.6 Кб, Просмотров: 92)

  7. #27
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,550
    Спасибо Благодарностей отдано 
    1,213
    Спасибо Благодарностей получено 
    1,748
    Поблагодарили
    680 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от perestoronin Посмотреть сообщение
    Сначала надо размяться. иначе будет на выходе лишь мишура без изящества кода и алгоритмов. Да и кто сказал что ретро-вычислители предназначены для одних лишь игр и демок ?
    Вот увидишь - разомнутся и разойдутся)

  8. #28
    Veteran Аватар для perestoronin
    Регистрация
    25.11.2011
    Адрес
    г. Красногорск
    Сообщений
    1,389
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    разомнутся и разойдутся)
    Конечно же после разминки разойдутся и поймут что ассемблер - это не тайна за семью печатями, и явят ещё одну Колибри, но уже для РК-86.

    Кстати вот новый (точнее незамеченный старый путь) для совершенствования расчета числа Пи, сдавала студентка и я её даже хорошо знаю, в 2009 году, причем успешно:
    Код:
    ; Зачетная задача: пользуясь рядом Тейлора для arctg, подсчитать число пи
    ; с 100 знаками после запятой.
    ;
    ; Расчет числа Пи  сделаем по формуле Мачина
    ;
    ;                 1            1
    ; pi = 16 arc tg --- -4 arc tg---
    ;                 5           239
    ;
    ; arc tg будем вычислять по формуле Тейлора:
    ;
    ;                  3     5     7     9
    ;                 x     x     x     x
    ; arc tg x = x - --- + --- - --- + --- - ...
    ;                 3     5     7     9
    .186
    stack segment stack
          dw 512 dup (?)
    stack ends
    data  segment
    ; -------------------------------------------------------------------------------
    ; Следующие числа указывают сколько цифр числа Пи нужно вычислять
    ; Я использовала программу MAKESZES.BAS чтобы вычислить эти значения
    ; в выводимом на экране результате только первые А (в нашем случе 100цифр) являются верными
    ; This BASIC program was used to calculate the equates for PIF.ASM.
    ;    DEFDBL A-Z
    ;    INPUT "Digits required"; A
    ;    MPVSize = 32 * ((A / (LOG(2) / LOG(10)) + 255) \ 256)
    ;   PRINT "NumDigits = "; A + 64
    ;   PRINT "MPVSize = "; MPVSize
    ;   k = A / .69897
    ;   k = INT(15 + (k + k * .1)) 'floor 1
    ;   PRINT "Last1 = "; k
    ;   k = INT(15 + (A / 2.37))   'floor 2
    ;   PRINT "Last2 = "; k
    ;
    numDigits=164
    mpvSize=74
    last1=172
    last2=57
    Думаю из этого куцего описания будет понятно куда можно попробовать дальше двинутся ? Или для ретро-процессоров это не по силам ?
    Авторство программки конечно же не студентки, а уважаемого гуру:
    ; ASMPI by Rich Geldreich, December 1992 - June 1993
    ; (A FAST all-assembly PI calculator.)
    ; Thanks to Victor Yui for suggesting the division optimization.
    ; (This program has only been verified to 10,000 digits.)
    https://sites.google.com/site/richgel99/
    https://sites.google.com/site/richge...-pi-calculator

    Все что сделала студентка, так это покоцала оригинал (под процессор 286) до требований курса использовать процессор 86.

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

    Замечу, что схожие алгоритмы лежат в основе всех TOP-вычислителей числа Пи, но нам более чем будет достаточно для счастья и этого достаточно быстрого алгоритма, мне бы хотелось увидеть результат дальнейшего роста производительности нашей РК-86 в разы!
    Последний раз редактировалось perestoronin; 08.11.2015 в 13:37.

    Ретрокладовая продажи

    продажи
    [свернуть]

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

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Остановился на 34405448 тактов - 19.35 сек
    А поделитесь, пожалуйста, непокоцанным исходником реализации на Си.

  10. #30
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,806
    Спасибо Благодарностей отдано 
    642
    Спасибо Благодарностей получено 
    1,773
    Поблагодарили
    1,023 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Попробовал дожать spigot b2mа: 26539359 такта - 14.93 сек
    pirk14.zip
    Появилось желание повыпендриваться и сделал еще версию оптимизированную для 580ВМ1 и 8085 - в ней используются только общие для этих процов команды. Индивидуально для них можно оптимизировать лучше.
    Оптимизированная версия:
    на 580ВМ1: 24938659 тактов - 14.03 сек
    на 8085: 24082312 такта - 13.55 сек

    100 знаков считаются слишком быстро, вот результаты расчета 535 знаков:
    1) Версия для 8080
    8080 и 580ВМ1 - 755784115 тактов - 7 мин 5 сек;
    8085 - 734253062 такта - 6 мин 53 сек;
    2) Версия для ВМ1 и 8085
    580ВМ1 - 709984370 тактов - 6 мин 39 сек;
    8085 - 685592137 тактов - 6 мин 26 сек;
    Нажмите на изображение для увеличения. 

Название:	pi535.gif 
Просмотров:	388 
Размер:	3.8 Кб 
ID:	54779

    Цитата Сообщение от Vslav Посмотреть сообщение
    А поделитесь, пожалуйста, непокоцанным исходником реализации на Си
    Насколько я понимаю, b2m использовал исходник отсюда (надо промотать вниз).

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

    Забыл сразу написать. Еще резервы есть в использовании самомодифицирующегося кода (попробовал, а потом убрал). Кроме того, данный вариант может работать при разрешенных прерываниях, если не на РК (хитрое использование стека также в резерве).
    Кардинального ускорения расчета большого количества знаков наверное лучше добиваться использованием другого алгоритма.

Страница 3 из 32 ПерваяПервая 1234567 ... ПоследняяПоследняя

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

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

Эту тему просматривают: 1 (пользователей: 0 , гостей: 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

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

Ваши права

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