User Tag List

Страница 12 из 26 ПерваяПервая ... 8910111213141516 ... ПоследняяПоследняя
Показано с 111 по 120 из 252

Тема: Сжатие данных

  1. #111

    Регистрация
    20.01.2010
    Адрес
    г. Зеленоград
    Сообщений
    600
    Спасибо Благодарностей отдано 
    28
    Спасибо Благодарностей получено 
    231
    Поблагодарили
    123 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Eugene85 Посмотреть сообщение
    Сделал компрессоры RIP и mRIP на PC.
    Кто там хотел компрессор на базе LZ+Хаффман и заполнить пробел между zx0 и shrinklerом? Всё как заказывали
    Жаль, формат данных не документирован хоть как-нибудь. Без этого сложно оценивать алгоритм. Я правильно понимаю, что в начале количеством единиц кодируется адрес в таблице, откуда распаковываются длины кодов смещения и количества, сколько там бит ещё прочитать из потока для из заполнения?

  2. #112

    Регистрация
    01.12.2020
    Адрес
    п. Заволжский
    Сообщений
    33
    Спасибо Благодарностей отдано 
    4
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    10 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Post Распаковщик UCL NRV2d для i80

    Исходник распаковщика, использующего алгоритм NRV2d из библиотеки UCL (такие упаковщики уже были, основной способ сжатия UPX).
    Размер - около 200 байт. Сжатие - неплохое, но уступает остальным (zx0, hrust, apack, rip). Распаковка одна из самых быстрых, это основное преимущество. Обращаю внимание, оригинальный поток, запакованный с помощью утилиты uclpack, не подходит. Как переделать написано: в функции ucl_nrv_99_compress() поменять одно значение (финальный маркер, с длинного на короткий), и осуществить пересборку из исходника (упаковщик n2dpack прилагается). Пример использования (для ПК «Специалист»): исходный размер – 17 кБ, сжатый – 5 кБ.
    Оставлю, может кому пригодится.
    Вложения Вложения
    Последний раз редактировалось lexarr; 27.01.2025 в 18:52.

  3. #113

    Регистрация
    16.11.2014
    Адрес
    г. Абакан
    Сообщений
    70
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    19 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Sandro, неправильно.

    Добавил краткое описание формата.

    Эти 2 пользователя(ей) поблагодарили Eugene85 за это полезное сообщение:

    Hrumer(06.07.2022), Improver(22.03.2022)

  4. #114

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,388
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Прикидочная (за час) версия derip8080 получилась 372 байта и почти в 5 раз медленнее zx0. Оптимизировать несомненно можно и по размеру и по скорости, но вряд ли в разы. RIP с упаковщиком Eugene85 хорошая, но все же ограниченно пригодная для 8080 штука.

  5. #115

    Регистрация
    16.11.2014
    Адрес
    г. Абакан
    Сообщений
    70
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    19 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я только сейчас осознал, что тема не имеет отношения к Спектруму :) Всё думал, причём тут 8080....

    Цитата Сообщение от ivagor Посмотреть сообщение
    и почти в 5 раз медленнее zx0
    Ну то есть примерно как на Z80.
    Последний раз редактировалось Eugene85; 25.03.2022 в 00:45.

  6. #116

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,388
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    RIP (или какой-нибудь другой упаковщик будущего с LZ+Хаффманом) можно сделать более дружественным для 8080 (и не только для 8080), если реализовать пару вещей, которые дружно сделаны в новейших ретроупаковщиках:
    1. Развернуть битовый поток в другую сторону. Делал такую утилиту постобработки для эксомизера, но потом там добавили опцию в самом упаковщике, что, конечно, более удобно.
    2. Сделать смещение отрицательным, чтобы учитывать его не по SBC, а по ADD. Это уже потребует не совсем механических правок распаковщика и не так важно, как п.1

  7. #117

    Регистрация
    16.11.2014
    Адрес
    г. Абакан
    Сообщений
    70
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    19 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    1. Развернуть битовый поток в другую сторону.
    Это, конечно, легко. Если когда-нибудь публично появится декомпрессор, ориентированный на это, сделаю опцию, не проблема.

    2. Сделать смещение отрицательным
    А вот это проблема. Декомпрессор придётся существенно удлинить, а он и так немаленький; в общем, нет смысла. Не знаком с архитектурой 8080, но думаю можно использовать 8-битные SUB+SBC, как это сделано в декомпрессоре mRIP.
    Другое решение: сжатие задом наперёд, тогда нужна будет именно ADD.
    Последний раз редактировалось Eugene85; 29.05.2022 в 05:49. Причина: опечатки

  8. #118

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,388
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Eugene85 Посмотреть сообщение
    можно использовать 8-битные SUB+SBC
    Примерно так я и делаю, вопрос не в принципиальной невозможности, а в компактности кода.
    Цитата Сообщение от Eugene85 Посмотреть сообщение
    Декомпрессор придётся существенно удлиннить
    Если речь про z80, то (по аналогии с декомпрессорами, использующими такой подход) думаю можно переделать и без удлинения, но надо внимательно посмотреть и подумать.
    Последний раз редактировалось ivagor; 27.03.2022 в 17:16.

  9. #119

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,388
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Развернул битовый поток. derip8080 стал на 9 байт короче и на 4 с копейками процента быстрее.

    Этот пользователь поблагодарил ivagor за это полезное сообщение:

    Oleg N. Cher(28.03.2022)

  10. #120

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,388
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Свет в конце тоннеля есть, сократил derip8080 до 330 байт и теперь он не в 5 раз медленнее zx0, а в 4. Меня пока не совсем устраивает, но уже похоже на что-то приемлемое. Т.к. для rip, в отличие от эксомизера, можно просто развернуть все биты в байтах, то думал воспользоваться какой-нибудь готовой бесплатной утилиткой и потом дать на нее ссылку на гитхабе, но неожиданно не нашел такой. Свою я конечно накропал, но может кто подскажет готовую?

Страница 12 из 26 ПерваяПервая ... 8910111213141516 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Архивирование, сжатие, упаковка.
    от GriV в разделе Программирование
    Ответов: 30
    Последнее: 22.07.2019, 17:25
  2. Существует ли идеальное сжатие без потери данных?
    от CodeMaster в разделе Программирование
    Ответов: 35
    Последнее: 06.10.2017, 00:15
  3. RLE сжатие (покритикуйте)
    от Vladson в разделе Программирование
    Ответов: 12
    Последнее: 16.03.2008, 12:29
  4. Ответов: 18
    Последнее: 18.06.2006, 16:50

Ваши права

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