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

User Tag List

Страница 58 из 110 ПерваяПервая ... 545556575859606162 ... ПоследняяПоследняя
Показано с 571 по 580 из 1094

Тема: ЭТЮДЫ

  1. #571
    Banned
    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sergey Посмотреть сообщение
    В обсчем, SDCC меня тоже уделал!
    говорили тебе, а ты не слушал

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

  3. #572
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,802
    Спасибо Благодарностей отдано 
    249
    Спасибо Благодарностей получено 
    114
    Поблагодарили
    88 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sergey Посмотреть сообщение
    Твою процедурку можно убыстрить на целых 2(!) такта, заменив JR на JP.
    Ага.
    Это мой бич, я всё время путаюсь кто из них быстрей...
    (наверное в голове стоит что чем длинней команда в байтах, тем медленнее)

  4. #573
    Member Аватар для Vladson
    Регистрация
    14.01.2008
    Адрес
    Эстония, Таллинн
    Сообщений
    177
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    24
    Поблагодарили
    14 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Destr Посмотреть сообщение
    Это мой бич, я всё время путаюсь кто из них быстрей...
    Мне бы твои проблемы, я после привыкания к современным реалиям (в 99% случаев приходится писать не быстрый код, а расширяемый и легкоподдерживаемый, независимо от сис-требований) вообще почти уже разучился считать такты и байты. Стараюсь по привычке писать "как лучше" и только потом когда ничего не работает, уже вспоминаю что на Z80 нету "стопицот" гигов и гигагерц
    Разрабатываю новый сетевой протокол
    Variable Length Advanced Data Sending Over Network
    Что он будет делать и зачем нужен не знаю, разработал пока только название.

  5. #574
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,802
    Спасибо Благодарностей отдано 
    249
    Спасибо Благодарностей получено 
    114
    Поблагодарили
    88 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Sergey, так в среднем ещё быстрей выходит:
    Код:
            LD A,H     ; 4
            XOR D      ; 4
            LD A,H     ; 4
            RLA        ; 4
            JP M,CHD   ; 10
            SBC HL,DE  ; 15
    CHD
    26/41 тактов

    Всё, вилы!
    Код:
            LD A,H     ; 4
            XOR D      ; 4
            JP P,CHD   ; 10
            EX DE,HL   ; 4
    CHD     SBC HL,DE  ; 15
    33/37 т.

    P.S. Это надо-же, всю ночь мучатся...
    Как работает - разбирайся сам, я спать наконец-то
    Последний раз редактировалось Destr; 10.02.2015 в 08:14.

  6. #575
    Veteran
    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    1,045
    Спасибо Благодарностей отдано 
    964
    Спасибо Благодарностей получено 
    246
    Поблагодарили
    123 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вставлю и свою версию (для разнообразия).

    Оформленна как подпрограмма.
    Недостатки: более медленная, большая, сложно переделать в inline.
    Достоинства: не портятся HL, DE. Возможно творчески переделать в inline, так что скорость увеличится. (Сейчас, когда она как подпрограмма, то содержит много условных переходов для подготовки флага C. Inline эти переходы можно использовать непосредственно)

    Код:
            LD A,H         ;4
            SUB D          ;4
            JP Z,HiEQ      ;10
            CCF            ;4 (=22)
            RET PE         ;5 (exit 33 p=0.25)
            JP   P,Els_    ;10
            SCF            ;4
            RET            ;10 (exit 51 p=0.373)
    Els_:
            XOR A          ;4
            RET            ;10 (exit 51 p=0.373)
    HiEQ:
            LD A,L         ;4
            CP E           ;4
            RET            ;10 (exit 36 p=0.004)
    Вероятности p посчитаны при равномерном распределении аргументов (-32768..32767). Чем меньше диапазон значений аргументов будет на самом деле, тем выше будет вероятность последнего выхода в 36 тактов.

    [свернуть]

    Аттач - тесты

    , чтобы убедится, что все процедуры работают одинаково. Все 5 версий, которые я нашёл в этой теме. Файл - ассемблер EMUZWin.
    Сам я убедился.
    (Хм. А вдруг они все работают одинаково неправильно? )
    Там два режима, 0 - полный перебор значений, сначала меняются старшие байты. 1 - берутся псевдослучайные 256 байт из ПЗУ, и тесты проходят только с ними.
    [свернуть]
    Вложения Вложения

  7. #576
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,858
    Спасибо Благодарностей отдано 
    131
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    62 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vladson Посмотреть сообщение
    Мне бы твои проблемы, я после привыкания к современным реалиям (в 99% случаев приходится писать не быстрый код, а расширяемый и легкоподдерживаемый, независимо от сис-требований) вообще почти уже разучился считать такты и байты. Стараюсь по привычке писать "как лучше" и только потом когда ничего не работает, уже вспоминаю что на Z80 нету "стопицот" гигов и гигагерц
    На Спеке тоже не стоит заморачиваться везде с быстродействием, а только в критических кусках. Иначе разработка будет длиться вечно.

  8. #577
    Banned
    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    На Спеке тоже не стоит заморачиваться везде с быстродействием, а только в критических кусках. Иначе разработка будет длиться вечно.
    Скорее всего - "гладко было на бумаге, да забыли про овраги"...

  9. #578
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,802
    Спасибо Благодарностей отдано 
    249
    Спасибо Благодарностей получено 
    114
    Поблагодарили
    88 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Reobne Посмотреть сообщение
    Хм. А вдруг они все работают одинаково неправильно?
    Свои варианты я проверял на 3д-бегалке.
    (там не забалуешь, если что не так то сразу кранты)
    Работают.

  10. #579
    Activist Аватар для Sergey
    Регистрация
    23.12.2006
    Адрес
    Славный город Самара
    Сообщений
    474
    Спасибо Благодарностей отдано 
    94
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Destr Посмотреть сообщение
    Свои варианты я проверял на 3д-бегалке.
    Оу! Проверь, пожалуйста, тогда и это:

    Код:
    		or	a,a		; 4
    		sbc	hl,de		;15
    		jp	PO,_no_xor	;10
    		ld	a,h		; 4	
    		xor	a, #0x80	; 7
    _no_xor:
    		jp	P,A_меньше_B
    		ld	hl,#0x0000  ; A>B
    		ret
    A_меньше_B: ; A<B
    		ld	hl,#0x0001
    		ret
    29/40 тактов
    Переход, не по CF, а по флагу знака, P/M
    Последний раз редактировалось Sergey; 10.02.2015 в 16:23.
    С уважением,
    Gris / Red Triangle.
    _____________________________________
    ZX-EVO/TS-Labs config/NGS/HDD/SD-card
    Amiga A1200/Blizzard 1230@50/32/60GB
    Amiga A1200/Apollo 1260@66/32/60GB
    UnAmiga (C5) AGA GM7123 VideoDAC

  11. #580
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,802
    Спасибо Благодарностей отдано 
    249
    Спасибо Благодарностей получено 
    114
    Поблагодарили
    88 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sergey Посмотреть сообщение
    Оу! Проверь, пожалуйста, тогда и это:
    Цитата Сообщение от Sergey Посмотреть сообщение
    Переход, не по CF, а по флагу знака, P/M
    Не могу, тёзка.
    Если по P/M (у меня макрос, его поменять нет проблем, но если надо контролировать другой флаг, то придётся весь текст перелопачивать где есть сравнение)
    Без обид, проверяй как-нибудь иначе (что там Reobne, накалякал?)

Страница 58 из 110 ПерваяПервая ... 545556575859606162 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Этюды: как бы написать поизящнее.
    от AndTorp в разделе Программирование
    Ответов: 5
    Последнее: 17.03.2008, 00:43
  2. Ответов: 0
    Последнее: 18.08.2006, 22:40
  3. Этюды: печать шрифтом 5x5...
    от breeze в разделе Программирование
    Ответов: 12
    Последнее: 27.03.2005, 05:21

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

Ваши права

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