-
- на спектруме каким только кодом не пытались оптимизировать переброску данных в экранной памяти. да, расход кода шёл громадный. а были бы LDIR/LDDR пооптимальнее, то никто бы таким гемором и не заморачивался. - Mahagam(22.10.2013 11:45)
- Так у Z80 как раз такие команды и были. Или нет? - Bill(22.10.2013 11:48)
- какие такие? LDIR/LDDR был. но где требовалась скорость - ими не пользовались. - Mahagam(22.10.2013 11:49)
- Хм... неужели пересылка блока одной командой требовала больше времени, чем последовательность нескольких команд? В чем был секрет? - Bill(22.10.2013 11:57)
- да. причин было много. команда была с префиксом, считывала себя каждый раз повторно, тратила такты на внутренние вычисления, работала с одним байтом за раз. реализации со стеком вида Mahagam(200 знак., 22.10.2013 12:08)
- Понятно, прием мне известный. - Bill(22.10.2013 12:22)
- Ещё POP <все регистры>; PUSH <все регистры> и так в цикле (только SP переставляли). Тоже 21 такт на 2 байта (плюс расходы на LD SP, xxx, но данные можно хранить как есть, а не в виде команд LD HL, xxxx). - fk0(22.10.2013 12:04, ссылка)
- 16 тактов у LDI и 21 такт у LDIR. Архитектура простейшая. Там легко просчитывается на что идут такты. - POV(22.10.2013 12:04)
- да. причин было много. команда была с префиксом, считывала себя каждый раз повторно, тратила такты на внутренние вычисления, работала с одним байтом за раз. реализации со стеком вида Mahagam(200 знак., 22.10.2013 12:08)
- Хм... неужели пересылка блока одной командой требовала больше времени, чем последовательность нескольких команд? В чем был секрет? - Bill(22.10.2013 11:57)
- какие такие? LDIR/LDDR был. но где требовалась скорость - ими не пользовались. - Mahagam(22.10.2013 11:49)
- Так у Z80 как раз такие команды и были. Или нет? - Bill(22.10.2013 11:48)
- на спектруме каким только кодом не пытались оптимизировать переброску данных в экранной памяти. да, расход кода шёл громадный. а были бы LDIR/LDDR пооптимальнее, то никто бы таким гемором и не заморачивался. - Mahagam(22.10.2013 11:45)