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

User Tag List

Страница 57 из 110 ПерваяПервая ... 535455565758596061 ... ПоследняяПоследняя
Показано с 561 по 570 из 1094

Тема: ЭТЮДЫ

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

    По умолчанию

    Destr,
    На обычном, нетурбированом: грубо 3 500 000/50 = 70 000 тактов/кадр.
    Реально - плюс минус немного, в зависимости от клона.
    Если прерывания включены, то программа обработки своё тоже отжирает.

    Сколько тактов затрачивает процедура, делим на 70 000, получаем сколько кадров она будет работать.

    А если нужно во время выполнения знать кадр, то:
    1. Включить прерывания и считать.
    2. Заранее посчитать сколько тратят процедуры времени, и при вызове суммировать.
    3. Заранее примерно посчитать сколько тратят процедуры, суммировать. Когда возможно, включать прерывания, и синхронизировать (например считаем в тысячах тактов, пришло прерывание - в счётчике 72 - плюсуем один кадр, в счётчике 230 - плюсуем 3 кадра. Другой вариант - считаем в 273-шках тактов, при прерывании оругляем до второго байта счётчика, который и будет числом кадров. То есть, если младший байт >128, то старшему +1, и младший в любом случае обнуляем.)
    4. Не знаю... Терпеть... Попробовать обойтись без счётчика кадров.

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

    По умолчанию

    Цитата Сообщение от denpopov Посмотреть сообщение
    посмотри мультиколор в MQM4, там интересная процедурка определения тактов.
    А это что? Игра, дема или ещё что?
    Цитата Сообщение от denpopov Посмотреть сообщение
    а поделить число тактов на число, занимаемое процедурой никак?
    Никак. Она может занимать и 10 000 и 100 000 тактов

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

    По умолчанию

    Чтобы не отключать прерывания, при использовании стека, можно регенерировать потерянные ячейки, как, например, в Amaurote.

    Либо, если известно, что последний POP был POP DE;
    если он там не испорчен, если не было EXX, то можно регенерировать из него.
    Код:
    II_Proc: LD (HL_Store+1),HL
      POP HL
      PUSH DE
      LD (RET_Store+1),HL
      LD (SP_Store+1),SP
      LD SP,II_SP
      PUSH AF
      ...
      POP AF
    HL_Store:  LD HL,nn
    SP_Store:  LD SP,nn
    RET_Store: JP nn
    Пишу из головы, для идеи, возможны ошибки.

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

    По умолчанию

    Цитата Сообщение от Sergey Посмотреть сообщение
    add a,1
    а как повлияет adc a,0 ?

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

    По умолчанию

    Цитата Сообщение от Sergey Посмотреть сообщение
    Сравнение двух 16-битных чисел со знаком.
    Signed int comparison
    Код:
    ; сравнение HL(sgn) и DE(sgn) на выходе флаг C установлен если HL<DE
    CMP_HL_DE
            LD A,H            ;4
            XOR D             ;4
            JP P,CHD1         ;10
            LD A,H            ;4
            RLA               ;4
            JP CHD2           ;10
    CHD1    SBC HL,DE         ;11
    CHD2
    ; (алгоритм подсказал sam style)
    Последний раз редактировалось Destr; 10.02.2015 в 02:23.

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

    По умолчанию

    Цитата Сообщение от Destr Посмотреть сообщение
    Код:
    ; сравнение HL(sgn) и DE(sgn) на выходе флаг C установлен если HL<DE...
    Гениально. Я, кстати, предполагал, что алгоритм с ветвлениями может быть быстрее.
    Получилось быстрее на 27 тактов, короче - на 6 байт
    Последний раз редактировалось Sergey; 09.02.2015 в 19:31.
    С уважением,
    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

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

    По умолчанию

    Цитата Сообщение от Sergey Посмотреть сообщение
    Гениально. Я, кстати, предполагал, что алгоритм с ветвлениями может быть быстрее.
    Получилось быстрее на 27 тактов, короче - на 6 байт
    Просто ты пошёл по ошибочному пути сравнивая 17 битные числа.
    Я на те-же грабли наступил, но по счастью мимо пробегал самстайл и вместе накропали сравнение знаков, ну потом я долизал до теперешнего вида.
    Кстати можно ещё сократить/ускорить, но это уже с потерей универсальности (т.е. вызывающая прога должна будет контролить не только С но ещё и P)

    Ещё в тему - нахождение средней точки между HL и DE (тоже со знаками)
    LD A,H
    XOR D
    ADD HL,DE
    JP P,$+4
    CCF
    RR H
    RR L

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

    По умолчанию

    Наберите программку на Си, сгенерьте сырок, а там сравните

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

    По умолчанию

    Цитата Сообщение от denpopov Посмотреть сообщение
    Наберите программку на Си, сгенерьте сырок, а там сравните
    Так сгенерь да покаж.
    (я например не умею)

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

    По умолчанию

    Цитата Сообщение от Destr Посмотреть сообщение
    Так сгенерь да покаж.
    (я например не умею)
    Опосля избавления от индексной адресации операндов и повышения наглядности получилось это:
    Код:
    _sgncmp:
    
    ;sgncmp.c:3: if (A>B) return 0;
    	ld	a,l ; A_low
    	sub	a,e ; B_low
    	ld	a,h ; A_high
    	sbc	a,d ; B_high
    	jp	PO, 00109$
    	xor	a, #0x80
    00109$:
    	jp	P,A_меньше_B
    	ld	hl,#0x0000  ; A>B
    	ret
    A_меньше_B: ; A<B
    	ld	hl,#0x0001
    	ret
    В обсчем, SDCC меня тоже уделал!
    P.S. Убожество своё потёр нафиг.
    P.P.S. Твою процедурку можно убыстрить на целых 2(!) такта, заменив JR на JP.
    Последний раз редактировалось Sergey; 11.02.2015 в 22:41.
    С уважением,
    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

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

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

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

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

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

Ваши права

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