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

User Tag List

Показано с 1 по 9 из 9

Тема: Интересно - кто ни будь сталкивался с тем, что длительность всех старых добрых команд

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Exclamation Интересно - кто ни будь сталкивался с тем, что длительность всех старых добрых команд

    отличается на самом деле от того, что указано в справочниках?

    Я реально столкнулся с этим, когда писал плеер цифровых музонов для Speakera. При этом в тактах всё было чётко (т.е. команды были выровнены), однако на самом деле было чётко замечено (на слух) отличие звучания плеера от оригинала на рельнос спектруме (ощущение, как будто проигрывается аудиокассета в "жующем магнитофоне").

    Детально этим вопросом я не стал заниматься тогда (это было где то три года назад), но вот счаз опять поднялся этот вопрос.

    И вот какие есть соображения:

    - Проблемы с изменённым количеством тактов наблюдается только для нечётнотактовых команд.
    - Не все нечётнотактовые команды имеют длительность, большую, чем указано
    - Предположительно, изменённая длительность команд (нечётнотактовых) справедлива только для ОЗУ, в ПЗУ такого никогда не происходит
    - Суммарно длительность таких "неформальных" команд может быть представлена в виде дополнительных 0.1-0.9 тактов, добавленных к длительности команды

    На основе аналогии, я знаю что в МК48 и МК51 один такт включает в себя несколько циклов, суммарно длительность команды составляется не из тактов, а из циклов, и соответсвенно, если принять такую же аналогию для Z80, то скорей всего длительность таких "странных" команд зависит от скорости выполнения циклов, которые прежде всего зависят от задержек обращений к памяти.

    Кроме того, Vitamin указал, что Unwinder исследовал длительность некоторых команд и усреднённая длительность их равна была скажем не 7 а 7,5 тактам (это может быть LD A,(DE) - 7,5, RET Z в случае NZ - 5,5 и т.д.).

    Причём, если вначале идёт такая "странная" команда процессора, то следующая автоматически увеличивается в длительности на один такт (т.е. конструкция RET Z inc b имеет длительность не 9 а 10 тактов, LD A,(DE) nop имеет 10 тактов длительность).

    И вот интересный момент: эмулятор R80 учитывает этот нюанс, т.е. создатели эмулятора знали о таких премудростях? US же это не учитывает, на остальных эмулях я не пробовал.

    Может есть специалисты которые объяснят почему происходит так?
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

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

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

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

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

Похожие темы

  1. Ответов: 10
    Последнее: 11.03.2005, 16:21

Ваши права

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