User Tag List

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

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

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

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

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

    По умолчанию

    Перенес суперделение на 6502. Трудно догадаться убрать верчение лишнего байта - благодарности уважаемому ivagor'у. Вот код для истории
    Код:
    div16            ;dividend+2 < divisor, CY = 0, AC = dividend+3
    .repeat 8
    	rol dividend+1
           	rol dividend+2
    	rol	
    	cmp divisor+1
            bcc l1
            bne l2
    
            ldx dividend+2
            cpx divisor
            bcc l1
    
    l2      tax
            lda dividend+2
            sbc divisor
            sta dividend+2
            txa
            sbc divisor+1
    l1
    .endr
            rol dividend+1
    
    .repeat 8
            rol dividend
           	rol dividend+2
    	rol	
    	cmp divisor+1
            bcc l1
            bne l2
    
            ldx dividend+2
            cpx divisor
            bcc l1
    
    l2      tax
            lda dividend+2
            sbc divisor
            sta dividend+2
            txa
            sbc divisor+1
    l1
    .endr
            rol dividend
            sta remainder+1
            lda dividend+2
            sta remainder
            lda #0
            sta dividend+2
    	sta dividend+3
    	rts
    Примерно 460 тактов, для z80 - 840. Итог по скорости 6502 быстрее только менее 90%. В некоторых случаях z80 показывает очень хорошую эффективность. Но на z80 легко писать очень плохие коды, а очень хорошие очень тяжело. С 6502 гораздо легче и коды легко масштабировать, типа сделать 64/32-деление.

    Последние данные по программам - дал им версию 1.

    Коммодор +4 1.62 - 152.3 - 1362
    Амстрад 6128 2.41 - 179.3 - 1582

    Как обычно для 100, 1000 и 3000 цифр. Версия для Коммодора считает до 7680 цифр, а для Амстрада до 5536 в бейсике. Кроме того есть сырая версия для Амстрада в СР/М, которая досчитала до 8500 цифр, но может и немного побольше.

    Чтобы совсем не пишнуться решил покинуть эту приятную тему. Может через месяц посмотрю, что тут случилось. Может появятся и результаты по БК, Спектрумам или даже лучшему домашнему ПК СССР Поиску? Успехов всем в пи-строительстве!
    Цитата Сообщение от ivagor Посмотреть сообщение
    Какой сильный перекос для 100 и 1000 цифр. То ли умножение на 10000 сказывается, то ли вывод на экран, но ПК-6128Ц и вектор с z80 считают 100 цифр быстрее, а 1000 медленнее.
    Конечно, вывод на экран. Под СР/М он ещё раз в 10 (!) медленнее. Зато там можно перенаправить вывод в файл как в ДОСе или Юниксе.
    Если хотите сами проверить, то скачайте эмулятор, подсоедините диск и командой RUN"PI проверяйте. Выход в СР/М командой |CPM, но нужен системный диск.
    Для Коммодора нужны две команды DLOAD"PI* и RUN

    Цитата Сообщение от ivagor Посмотреть сообщение
    Посчитать можно, а как их контролировать? На экран вектора в 512x256 одновременно можно вывести 5376 символов 4x6 (надо еще написать процедуру вывода). Выводить с прокруткой, сохранять на диск?
    По последним цифрам. Алгоритм таков, что сбой накапливается. Для больших чисел можно и на диск сбрасывать. Дело автора.

    Цитата Сообщение от perestoronin Посмотреть сообщение
    А можно еще, just for fun, вывести двоичное представление числа Пи в прямоугольную область в правом верхнем углу экрана, и рядом ниже выводить посчитанное по тестируемому алгоритму, глаз обычно у всех алмаз, сразу увидит где пиксели различаются.
    Круто! Но в некоторых системах есть текстовые режимы...
    Последний раз редактировалось litwr; 08.01.2016 в 11:19.

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

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

Эту тему просматривают: 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

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

Ваши права

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