User Tag List

Страница 9 из 9 ПерваяПервая ... 56789
Показано с 81 по 85 из 85

Тема: Упаковщики

  1. #81

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

    По умолчанию

    Есть исходники, а текстового описания я не находил.

  2. #82

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

    По умолчанию

    Сократил на 2 байта и чуть-чуть ускорил распаковщик zx0. Это распаковщик для "классического" формата, не для второй версии. У меня не получилось выигрыша от перехода ко второй версии ни для 8080 ни для pdp11. К счастью степень сжатия одинаковая и вторая версия упаковщика может сжимать в "классический" формат.

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

    lexarr(26.04.2022), Manwe(05.10.2021), Oleg N. Cher(06.10.2021)

  3. #83

    Регистрация
    06.02.2020
    Адрес
    г. Москва
    Сообщений
    484
    Спасибо Благодарностей отдано 
    139
    Спасибо Благодарностей получено 
    391
    Поблагодарили
    146 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Manwe Посмотреть сообщение
    Ссылка на нашу адаптацию lzsa2 (быстрый распаковщик размером 198 байт): github
    Грац за готовый код и утилиту под винду. Заюзал для УКНЦ. Работоспособно и шустренько так.
    Единственно кажется для УКНЦ вот эта команда может быть из разряда "не все йогурты одинаково полезны":
    Код:
    		BISB (R1)+,R0	; read low byte
    		TST (SP)+	; skip saved R0
    		RET
    Дело в том что на УКНЦ чтение из некоторых ячеек памяти вызывает какие-то действия (например при чтении @#177024 загрузятся некими значениями ячейки памяти @#177020, @#177022). Разумеется случай нереально маловероятный, но "а вдруг".
    На БК наверное таких ужасов нету и там все окей.

    UPD: туплю-же. это ведь стек и он туда не залезет, просто привычка такая не юзать сокращения вида tst (Rn)+ или cmp (Rn)+,(Rn)+
    Последний раз редактировалось BlaireCas; 07.11.2021 в 13:02.

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

    Manwe(08.11.2021)

  4. #84

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

    Post Распаковщик UCL NRV2d для БК / PDP

    Исходник распаковщика, использующего алгоритм NRV2d из библиотеки UCL. Для других платформ такой уже делали давно (это кстати основной способ упаковки для утилиты UPX).
    Распаковка одна из самых быстрых, но по степени сжатия уступает остальным, в целом - неплохо.

    Скрытый текст


    Код:
    ; Алгоритм распаковки NRV2d (UCL) для БК / PDP
    ; Вход:
    ; R0 - адрес сжатых данных;
    ; R1 - адрес распаковки.
    
    N2DUNPK:
    	MOV	#-1, R4
    	XOR	R2, R2
    	BR	DCL
    
    NXDC:	MOVB	(R0)+, (R1)+
    DCL:	CALL	RB
    	BCS	NXDC
    
    	MOV	#1, R3
    OFN:	ADD	R3, R3
    	CALL	RB
    	ADC	R3
    	CALL	RB
    	BCS	OFE
    	DEC	R3
    	ADD	R3, R3
    	CALL	RB
    	ADC	R3
    	BR	OFN
    
    RB:	ADD	R2, R2
    	BEQ	RBZ
    	RET
    RBZ:	MOVB	(R0)+, R2
    	SWAB	R2
    	BIC	#177, R2
    	BIS	#200, R2
    	ADD	R2, R2
    	RET
    
    OFE:	SUB	#3, R3
    	BCC	OF2
    
    	MOV	R4, R3
    	XOR	R5, R5
    	CALL	RB
    	ADC	R5
    	BR	OF3
    
    OF2:	SWAB	R3
    	MOVB	(R0)+, R5
    	BIC	#177400, R5
    	BIS	R5, R3
    	COM	R3
    	BEQ	BRK
    	XOR	R5, R5
    	SEC
    	ROR	R3
    	ADC	R5
    	MOV	R3, R4
    
    OF3:	ADD	R5, R5
    	CALL	RB
    	ADC	R5
    	BNE	LF1
    
    	INC	R5
    NXLF:	ADD	R5, R5
    	CALL	RB
    	ADC	R5
    	CALL	RB
    	BCC	NXLF
    	ADD	#2, R5
    
    LF1:	CMP	R3, #175400
    	ADC	R5
    	INC	R5
    
    	ADD	R1, R3
    NXMV:	MOVB	(R3)+, (R1)+
    	SOB	R5, NXMV
    	BR	DCL
    
    BRK:	RET
    [свернуть]

    Для упаковки используется приложенная утилита `n2dpack`. Отличие от оригинального алгоритма - переделанный финальный маркер (с длинного на короткий).

    Пример использования: sreverz.zip.
    Вложения Вложения
    Последний раз редактировалось lexarr; 27.01.2025 в 18:43.

  5. #85

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

    По умолчанию

    Еще один распаковщик - это хорошо, но сейчас он представляет скорее исторический интерес, современные намного лучше. Если взять например zx1, то он сжимает сильнее. А распаковщик 108 байт против 160 и почти в два раза быстрее.

Страница 9 из 9 ПерваяПервая ... 56789

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

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

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

Ваши права

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