Интернет магазин китайских планшетных компьютеров |
|
Компьютеры - LZMA - Алгоритмы BCJ/BCJ2 для исполняемых файлов04 июня 2011Оглавление: 1. LZMA 2. Алгоритмы BCJ/BCJ2 для исполняемых файлов LZMA SDK предлагает алгоритм BCJ/BCJ2, реализованный для процессоров архитектуры x86, ARM, PowerPC, IA-64 и ARM Thumb. В нём точки перехода перед сжатием нормализуются то есть, например, для x86 это означает, что инструкции ближних и условных переходов и вызовы функций преобразуются из формы с относительным смещением «перейти на 1665 байт назад» в форму с абсолютным адресом «перейти к адресу 5554». Алгоритм BCJ2, реализованный в 7-Zip, использует 32-битную адресацию. В архиваторе для исполняемых файлов UPX адресация зависит от типа архитектуры. РеализацииРеализация, доступная по лицензии GNU LGPL, имеет следующие свойства:
Размер кода распаковки LZMA составляет порядка 5 Кб; расход динамической памяти зависит от размера словарей. Эти возможности позволяют реализовать распаковку на встраиваемых системах. Использование особенностей Microsoft Windows в исходном коде усложняет создание версий программы для Unix. Тем не менее, существует две работоспособные портированные версии: в p7zip и FreeArc более или менее портированы версии утилит командной строки 7z и 7za для POSIX-систем, Mac OS X и BeOS. Также есть официальная портируемая реализация LZMA Utils, предназначенная для создания поточных компрессоров подобных gzip. С 2008 года она начинает всё чаще использоваться в системах управления пакетами в частности, dpkg и RPM. 7-Zip использует достаточно гибкий формат архива, его поддерживает и некоторые сторонние утилиты. Также существует порт 7-Zip для Mac OS X, который называется Compress, в настоящее время представляющий из себя достаточно недоработанный инструмент. Для Mac OS X существуют ещё сборки p7zip и 7zX. Для работы с LZMA автор предоставляет свой кроссплаформенный SDK, обладающий вышеперечисленными свойствами. Основная часть SDK написана на C++ и изначально распространялась на условиях GNU LGPL. Стоит отметить несколько моментов:
Некоторые сетевые устройства в качестве микропрограммы используют модифицированный Linux, загружаемый со сжатой файловой системы. В качестве алгоритма сжатия файловой системы вместо Zlib используется алгоритм LZMA. Как правило, такой файловой системой является squashfs с LZMA-патчем. Просмотров: 2132
|