mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-29 00:24:07 +02:00
MdeModulePkg: strip trailing whitespace
Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Hao A Wu <hao.a.wu@intel.com> Cc: Dandan Bi <dandan.bi@intel.com> Cc: Liming Gao <liming.gao@intel.com> Cc: Eric Dong <eric.dong@intel.com> Cc: Zhichao Gao <zhichao.gao@intel.com> Cc: Ray Ni <ray.ni@intel.com> Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org> Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
This commit is contained in:
parent
89c2e2b1d3
commit
ba39402f34
@ -1,10 +1,10 @@
|
|||||||
///** @file
|
///** @file
|
||||||
//
|
//
|
||||||
// Front page formset.
|
// Front page formset.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>
|
// Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>
|
||||||
// SPDX-License-Identifier: BSD-2-Clause-Patent
|
// SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||||
//
|
//
|
||||||
//**/
|
//**/
|
||||||
|
|
||||||
#define FORMSET_GUID { 0x9e0c30bc, 0x3f06, 0x4ba6, 0x82, 0x88, 0x9, 0x17, 0x9b, 0x85, 0x5d, 0xbe }
|
#define FORMSET_GUID { 0x9e0c30bc, 0x3f06, 0x4ba6, 0x82, 0x88, 0x9, 0x17, 0x9b, 0x85, 0x5d, 0xbe }
|
||||||
@ -70,7 +70,7 @@ formset
|
|||||||
|
|
||||||
label LABEL_FRANTPAGE_INFORMATION;
|
label LABEL_FRANTPAGE_INFORMATION;
|
||||||
//
|
//
|
||||||
// This is where we will dynamically add a Action type op-code to show
|
// This is where we will dynamically add a Action type op-code to show
|
||||||
// the platform information.
|
// the platform information.
|
||||||
//
|
//
|
||||||
label LABEL_END;
|
label LABEL_END;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
//
|
//
|
||||||
// Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>
|
// Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>
|
||||||
// SPDX-License-Identifier: BSD-2-Clause-Patent
|
// SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||||
//
|
//
|
||||||
//**/
|
//**/
|
||||||
|
|
||||||
#define FORMSET_GUID { 0x3ebfa8e6, 0x511d, 0x4b5b, 0xa9, 0x5f, 0xfb, 0x38, 0x26, 0xf, 0x1c, 0x27 }
|
#define FORMSET_GUID { 0x3ebfa8e6, 0x511d, 0x4b5b, 0xa9, 0x5f, 0xfb, 0x38, 0x26, 0xf, 0x1c, 0x27 }
|
||||||
|
@ -245,10 +245,10 @@ typedef struct
|
|||||||
{
|
{
|
||||||
ILookInStream vt;
|
ILookInStream vt;
|
||||||
const ISeekInStream *realStream;
|
const ISeekInStream *realStream;
|
||||||
|
|
||||||
size_t pos;
|
size_t pos;
|
||||||
size_t size; /* it's data size */
|
size_t size; /* it's data size */
|
||||||
|
|
||||||
/* the following variables must be set outside */
|
/* the following variables must be set outside */
|
||||||
Byte *buf;
|
Byte *buf;
|
||||||
size_t bufSize;
|
size_t bufSize;
|
||||||
|
@ -11,23 +11,23 @@ EXTERN_C_BEGIN
|
|||||||
/*
|
/*
|
||||||
These functions convert relative addresses to absolute addresses
|
These functions convert relative addresses to absolute addresses
|
||||||
in CALL instructions to increase the compression ratio.
|
in CALL instructions to increase the compression ratio.
|
||||||
|
|
||||||
In:
|
In:
|
||||||
data - data buffer
|
data - data buffer
|
||||||
size - size of data
|
size - size of data
|
||||||
ip - current virtual Instruction Pinter (IP) value
|
ip - current virtual Instruction Pinter (IP) value
|
||||||
state - state variable for x86 converter
|
state - state variable for x86 converter
|
||||||
encoding - 0 (for decoding), 1 (for encoding)
|
encoding - 0 (for decoding), 1 (for encoding)
|
||||||
|
|
||||||
Out:
|
Out:
|
||||||
state - state variable for x86 converter
|
state - state variable for x86 converter
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
The number of processed bytes. If you call these functions with multiple calls,
|
The number of processed bytes. If you call these functions with multiple calls,
|
||||||
you must start next call with first byte after block of processed bytes.
|
you must start next call with first byte after block of processed bytes.
|
||||||
|
|
||||||
Type Endian Alignment LookAhead
|
Type Endian Alignment LookAhead
|
||||||
|
|
||||||
x86 little 1 4
|
x86 little 1 4
|
||||||
ARMT little 2 2
|
ARMT little 2 2
|
||||||
ARM little 4 0
|
ARM little 4 0
|
||||||
|
@ -75,7 +75,7 @@ static void MatchFinder_ReadBlock(CMatchFinder *p)
|
|||||||
p->streamEndWasReached = 1;
|
p->streamEndWasReached = 1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
Byte *dest = p->buffer + (p->streamPos - p->pos);
|
Byte *dest = p->buffer + (p->streamPos - p->pos);
|
||||||
@ -182,24 +182,24 @@ int MatchFinder_Create(CMatchFinder *p, UInt32 historySize,
|
|||||||
ISzAllocPtr alloc)
|
ISzAllocPtr alloc)
|
||||||
{
|
{
|
||||||
UInt32 sizeReserv;
|
UInt32 sizeReserv;
|
||||||
|
|
||||||
if (historySize > kMaxHistorySize)
|
if (historySize > kMaxHistorySize)
|
||||||
{
|
{
|
||||||
MatchFinder_Free(p, alloc);
|
MatchFinder_Free(p, alloc);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
sizeReserv = historySize >> 1;
|
sizeReserv = historySize >> 1;
|
||||||
if (historySize >= ((UInt32)3 << 30)) sizeReserv = historySize >> 3;
|
if (historySize >= ((UInt32)3 << 30)) sizeReserv = historySize >> 3;
|
||||||
else if (historySize >= ((UInt32)2 << 30)) sizeReserv = historySize >> 2;
|
else if (historySize >= ((UInt32)2 << 30)) sizeReserv = historySize >> 2;
|
||||||
|
|
||||||
sizeReserv += (keepAddBufferBefore + matchMaxLen + keepAddBufferAfter) / 2 + (1 << 19);
|
sizeReserv += (keepAddBufferBefore + matchMaxLen + keepAddBufferAfter) / 2 + (1 << 19);
|
||||||
|
|
||||||
p->keepSizeBefore = historySize + keepAddBufferBefore + 1;
|
p->keepSizeBefore = historySize + keepAddBufferBefore + 1;
|
||||||
p->keepSizeAfter = matchMaxLen + keepAddBufferAfter;
|
p->keepSizeAfter = matchMaxLen + keepAddBufferAfter;
|
||||||
|
|
||||||
/* we need one additional byte, since we use MoveBlock after pos++ and before dictionary using */
|
/* we need one additional byte, since we use MoveBlock after pos++ and before dictionary using */
|
||||||
|
|
||||||
if (LzInWindow_Create(p, sizeReserv, alloc))
|
if (LzInWindow_Create(p, sizeReserv, alloc))
|
||||||
{
|
{
|
||||||
UInt32 newCyclicBufferSize = historySize + 1;
|
UInt32 newCyclicBufferSize = historySize + 1;
|
||||||
@ -245,7 +245,7 @@ int MatchFinder_Create(CMatchFinder *p, UInt32 historySize,
|
|||||||
p->historySize = historySize;
|
p->historySize = historySize;
|
||||||
p->hashSizeSum = hs;
|
p->hashSizeSum = hs;
|
||||||
p->cyclicBufferSize = newCyclicBufferSize;
|
p->cyclicBufferSize = newCyclicBufferSize;
|
||||||
|
|
||||||
numSons = newCyclicBufferSize;
|
numSons = newCyclicBufferSize;
|
||||||
if (p->btMode)
|
if (p->btMode)
|
||||||
numSons <<= 1;
|
numSons <<= 1;
|
||||||
@ -253,11 +253,11 @@ int MatchFinder_Create(CMatchFinder *p, UInt32 historySize,
|
|||||||
|
|
||||||
if (p->hash && p->numRefs == newSize)
|
if (p->hash && p->numRefs == newSize)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
MatchFinder_FreeThisClassMemory(p, alloc);
|
MatchFinder_FreeThisClassMemory(p, alloc);
|
||||||
p->numRefs = newSize;
|
p->numRefs = newSize;
|
||||||
p->hash = AllocRefs(newSize, alloc);
|
p->hash = AllocRefs(newSize, alloc);
|
||||||
|
|
||||||
if (p->hash)
|
if (p->hash)
|
||||||
{
|
{
|
||||||
p->son = p->hash + p->hashSizeSum;
|
p->son = p->hash + p->hashSizeSum;
|
||||||
@ -274,11 +274,11 @@ static void MatchFinder_SetLimits(CMatchFinder *p)
|
|||||||
{
|
{
|
||||||
UInt32 limit = kMaxValForNormalize - p->pos;
|
UInt32 limit = kMaxValForNormalize - p->pos;
|
||||||
UInt32 limit2 = p->cyclicBufferSize - p->cyclicBufferPos;
|
UInt32 limit2 = p->cyclicBufferSize - p->cyclicBufferPos;
|
||||||
|
|
||||||
if (limit2 < limit)
|
if (limit2 < limit)
|
||||||
limit = limit2;
|
limit = limit2;
|
||||||
limit2 = p->streamPos - p->pos;
|
limit2 = p->streamPos - p->pos;
|
||||||
|
|
||||||
if (limit2 <= p->keepSizeAfter)
|
if (limit2 <= p->keepSizeAfter)
|
||||||
{
|
{
|
||||||
if (limit2 > 0)
|
if (limit2 > 0)
|
||||||
@ -286,10 +286,10 @@ static void MatchFinder_SetLimits(CMatchFinder *p)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
limit2 -= p->keepSizeAfter;
|
limit2 -= p->keepSizeAfter;
|
||||||
|
|
||||||
if (limit2 < limit)
|
if (limit2 < limit)
|
||||||
limit = limit2;
|
limit = limit2;
|
||||||
|
|
||||||
{
|
{
|
||||||
UInt32 lenLimit = p->streamPos - p->pos;
|
UInt32 lenLimit = p->streamPos - p->pos;
|
||||||
if (lenLimit > p->matchMaxLen)
|
if (lenLimit > p->matchMaxLen)
|
||||||
@ -328,10 +328,10 @@ void MatchFinder_Init_3(CMatchFinder *p, int readData)
|
|||||||
p->streamPos = p->cyclicBufferSize;
|
p->streamPos = p->cyclicBufferSize;
|
||||||
p->result = SZ_OK;
|
p->result = SZ_OK;
|
||||||
p->streamEndWasReached = 0;
|
p->streamEndWasReached = 0;
|
||||||
|
|
||||||
if (readData)
|
if (readData)
|
||||||
MatchFinder_ReadBlock(p);
|
MatchFinder_ReadBlock(p);
|
||||||
|
|
||||||
MatchFinder_SetLimits(p);
|
MatchFinder_SetLimits(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -343,7 +343,7 @@ void MatchFinder_Init(CMatchFinder *p)
|
|||||||
MatchFinder_Init_3(p, True);
|
MatchFinder_Init_3(p, True);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static UInt32 MatchFinder_GetSubValue(CMatchFinder *p)
|
static UInt32 MatchFinder_GetSubValue(CMatchFinder *p)
|
||||||
{
|
{
|
||||||
return (p->pos - p->historySize - 1) & kNormalizeMask;
|
return (p->pos - p->historySize - 1) & kNormalizeMask;
|
||||||
@ -586,7 +586,7 @@ static UInt32 Bt3_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances)
|
|||||||
d2 = pos - hash[h2];
|
d2 = pos - hash[h2];
|
||||||
|
|
||||||
curMatch = (hash + kFix3HashSize)[hv];
|
curMatch = (hash + kFix3HashSize)[hv];
|
||||||
|
|
||||||
hash[h2] = pos;
|
hash[h2] = pos;
|
||||||
(hash + kFix3HashSize)[hv] = pos;
|
(hash + kFix3HashSize)[hv] = pos;
|
||||||
|
|
||||||
@ -605,7 +605,7 @@ static UInt32 Bt3_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances)
|
|||||||
MOVE_POS_RET;
|
MOVE_POS_RET;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
GET_MATCHES_FOOTER(offset, maxLen)
|
GET_MATCHES_FOOTER(offset, maxLen)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -631,14 +631,14 @@ static UInt32 Bt4_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances)
|
|||||||
|
|
||||||
maxLen = 0;
|
maxLen = 0;
|
||||||
offset = 0;
|
offset = 0;
|
||||||
|
|
||||||
if (d2 < p->cyclicBufferSize && *(cur - d2) == *cur)
|
if (d2 < p->cyclicBufferSize && *(cur - d2) == *cur)
|
||||||
{
|
{
|
||||||
distances[0] = maxLen = 2;
|
distances[0] = maxLen = 2;
|
||||||
distances[1] = d2 - 1;
|
distances[1] = d2 - 1;
|
||||||
offset = 2;
|
offset = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (d2 != d3 && d3 < p->cyclicBufferSize && *(cur - d3) == *cur)
|
if (d2 != d3 && d3 < p->cyclicBufferSize && *(cur - d3) == *cur)
|
||||||
{
|
{
|
||||||
maxLen = 3;
|
maxLen = 3;
|
||||||
@ -646,7 +646,7 @@ static UInt32 Bt4_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances)
|
|||||||
offset += 2;
|
offset += 2;
|
||||||
d2 = d3;
|
d2 = d3;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (offset != 0)
|
if (offset != 0)
|
||||||
{
|
{
|
||||||
UPDATE_maxLen
|
UPDATE_maxLen
|
||||||
@ -657,10 +657,10 @@ static UInt32 Bt4_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances)
|
|||||||
MOVE_POS_RET;
|
MOVE_POS_RET;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (maxLen < 3)
|
if (maxLen < 3)
|
||||||
maxLen = 3;
|
maxLen = 3;
|
||||||
|
|
||||||
GET_MATCHES_FOOTER(offset, maxLen)
|
GET_MATCHES_FOOTER(offset, maxLen)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -712,7 +712,7 @@ static UInt32 Bt5_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances)
|
|||||||
offset = 2;
|
offset = 2;
|
||||||
d2 = d3;
|
d2 = d3;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (d2 != d4 && d4 < p->cyclicBufferSize
|
if (d2 != d4 && d4 < p->cyclicBufferSize
|
||||||
&& *(cur - d4) == *cur
|
&& *(cur - d4) == *cur
|
||||||
&& *(cur - d4 + 3) == *(cur + 3))
|
&& *(cur - d4 + 3) == *(cur + 3))
|
||||||
@ -722,7 +722,7 @@ static UInt32 Bt5_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances)
|
|||||||
offset += 2;
|
offset += 2;
|
||||||
d2 = d4;
|
d2 = d4;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (offset != 0)
|
if (offset != 0)
|
||||||
{
|
{
|
||||||
UPDATE_maxLen
|
UPDATE_maxLen
|
||||||
@ -736,7 +736,7 @@ static UInt32 Bt5_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances)
|
|||||||
|
|
||||||
if (maxLen < 4)
|
if (maxLen < 4)
|
||||||
maxLen = 4;
|
maxLen = 4;
|
||||||
|
|
||||||
GET_MATCHES_FOOTER(offset, maxLen)
|
GET_MATCHES_FOOTER(offset, maxLen)
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
@ -751,10 +751,10 @@ static UInt32 Hc4_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances)
|
|||||||
|
|
||||||
hash = p->hash;
|
hash = p->hash;
|
||||||
pos = p->pos;
|
pos = p->pos;
|
||||||
|
|
||||||
d2 = pos - hash[ h2];
|
d2 = pos - hash[ h2];
|
||||||
d3 = pos - (hash + kFix3HashSize)[h3];
|
d3 = pos - (hash + kFix3HashSize)[h3];
|
||||||
|
|
||||||
curMatch = (hash + kFix4HashSize)[hv];
|
curMatch = (hash + kFix4HashSize)[hv];
|
||||||
|
|
||||||
hash[ h2] = pos;
|
hash[ h2] = pos;
|
||||||
@ -770,7 +770,7 @@ static UInt32 Hc4_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances)
|
|||||||
distances[1] = d2 - 1;
|
distances[1] = d2 - 1;
|
||||||
offset = 2;
|
offset = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (d2 != d3 && d3 < p->cyclicBufferSize && *(cur - d3) == *cur)
|
if (d2 != d3 && d3 < p->cyclicBufferSize && *(cur - d3) == *cur)
|
||||||
{
|
{
|
||||||
maxLen = 3;
|
maxLen = 3;
|
||||||
@ -778,7 +778,7 @@ static UInt32 Hc4_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances)
|
|||||||
offset += 2;
|
offset += 2;
|
||||||
d2 = d3;
|
d2 = d3;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (offset != 0)
|
if (offset != 0)
|
||||||
{
|
{
|
||||||
UPDATE_maxLen
|
UPDATE_maxLen
|
||||||
@ -789,7 +789,7 @@ static UInt32 Hc4_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances)
|
|||||||
MOVE_POS_RET;
|
MOVE_POS_RET;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (maxLen < 3)
|
if (maxLen < 3)
|
||||||
maxLen = 3;
|
maxLen = 3;
|
||||||
|
|
||||||
@ -809,7 +809,7 @@ static UInt32 Hc5_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances)
|
|||||||
|
|
||||||
hash = p->hash;
|
hash = p->hash;
|
||||||
pos = p->pos;
|
pos = p->pos;
|
||||||
|
|
||||||
d2 = pos - hash[ h2];
|
d2 = pos - hash[ h2];
|
||||||
d3 = pos - (hash + kFix3HashSize)[h3];
|
d3 = pos - (hash + kFix3HashSize)[h3];
|
||||||
d4 = pos - (hash + kFix4HashSize)[h4];
|
d4 = pos - (hash + kFix4HashSize)[h4];
|
||||||
@ -846,7 +846,7 @@ static UInt32 Hc5_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances)
|
|||||||
offset = 2;
|
offset = 2;
|
||||||
d2 = d3;
|
d2 = d3;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (d2 != d4 && d4 < p->cyclicBufferSize
|
if (d2 != d4 && d4 < p->cyclicBufferSize
|
||||||
&& *(cur - d4) == *cur
|
&& *(cur - d4) == *cur
|
||||||
&& *(cur - d4 + 3) == *(cur + 3))
|
&& *(cur - d4 + 3) == *(cur + 3))
|
||||||
@ -856,7 +856,7 @@ static UInt32 Hc5_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances)
|
|||||||
offset += 2;
|
offset += 2;
|
||||||
d2 = d4;
|
d2 = d4;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (offset != 0)
|
if (offset != 0)
|
||||||
{
|
{
|
||||||
UPDATE_maxLen
|
UPDATE_maxLen
|
||||||
@ -867,7 +867,7 @@ static UInt32 Hc5_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances)
|
|||||||
MOVE_POS_RET;
|
MOVE_POS_RET;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (maxLen < 4)
|
if (maxLen < 4)
|
||||||
maxLen = 4;
|
maxLen = 4;
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ typedef struct _CMatchFinder
|
|||||||
|
|
||||||
Byte *bufferBase;
|
Byte *bufferBase;
|
||||||
ISeqInStream *stream;
|
ISeqInStream *stream;
|
||||||
|
|
||||||
UInt32 blockSize;
|
UInt32 blockSize;
|
||||||
UInt32 keepSizeBefore;
|
UInt32 keepSizeBefore;
|
||||||
UInt32 keepSizeAfter;
|
UInt32 keepSizeAfter;
|
||||||
@ -59,7 +59,7 @@ typedef struct _CMatchFinder
|
|||||||
((p)->streamEndWasReached \
|
((p)->streamEndWasReached \
|
||||||
&& (p)->streamPos == (p)->pos \
|
&& (p)->streamPos == (p)->pos \
|
||||||
&& (!(p)->directInput || (p)->directInputRem == 0))
|
&& (!(p)->directInput || (p)->directInputRem == 0))
|
||||||
|
|
||||||
int MatchFinder_NeedMove(CMatchFinder *p);
|
int MatchFinder_NeedMove(CMatchFinder *p);
|
||||||
Byte *MatchFinder_GetPointerToCurrentPos(CMatchFinder *p);
|
Byte *MatchFinder_GetPointerToCurrentPos(CMatchFinder *p);
|
||||||
void MatchFinder_MoveBlock(CMatchFinder *p);
|
void MatchFinder_MoveBlock(CMatchFinder *p);
|
||||||
|
@ -229,7 +229,7 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit
|
|||||||
Byte *dic = p->dic;
|
Byte *dic = p->dic;
|
||||||
SizeT dicBufSize = p->dicBufSize;
|
SizeT dicBufSize = p->dicBufSize;
|
||||||
SizeT dicPos = p->dicPos;
|
SizeT dicPos = p->dicPos;
|
||||||
|
|
||||||
UInt32 processedPos = p->processedPos;
|
UInt32 processedPos = p->processedPos;
|
||||||
UInt32 checkDicSize = p->checkDicSize;
|
UInt32 checkDicSize = p->checkDicSize;
|
||||||
unsigned len = 0;
|
unsigned len = 0;
|
||||||
@ -305,7 +305,7 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit
|
|||||||
dic[dicPos++] = (Byte)symbol;
|
dic[dicPos++] = (Byte)symbol;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
UPDATE_1(prob);
|
UPDATE_1(prob);
|
||||||
prob = probs + IsRep + state;
|
prob = probs + IsRep + state;
|
||||||
@ -372,7 +372,7 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit
|
|||||||
state = state < kNumLitStates ? 8 : 11;
|
state = state < kNumLitStates ? 8 : 11;
|
||||||
prob = probs + RepLenCoder;
|
prob = probs + RepLenCoder;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _LZMA_SIZE_OPT
|
#ifdef _LZMA_SIZE_OPT
|
||||||
{
|
{
|
||||||
unsigned lim, offset;
|
unsigned lim, offset;
|
||||||
@ -476,7 +476,7 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit
|
|||||||
{
|
{
|
||||||
NORMALIZE
|
NORMALIZE
|
||||||
range >>= 1;
|
range >>= 1;
|
||||||
|
|
||||||
{
|
{
|
||||||
UInt32 t;
|
UInt32 t;
|
||||||
code -= range;
|
code -= range;
|
||||||
@ -512,7 +512,7 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rep3 = rep2;
|
rep3 = rep2;
|
||||||
rep2 = rep1;
|
rep2 = rep1;
|
||||||
rep1 = rep0;
|
rep1 = rep0;
|
||||||
@ -531,13 +531,13 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit
|
|||||||
SizeT rem;
|
SizeT rem;
|
||||||
unsigned curLen;
|
unsigned curLen;
|
||||||
SizeT pos;
|
SizeT pos;
|
||||||
|
|
||||||
if ((rem = limit - dicPos) == 0)
|
if ((rem = limit - dicPos) == 0)
|
||||||
{
|
{
|
||||||
p->dicPos = dicPos;
|
p->dicPos = dicPos;
|
||||||
return SZ_ERROR_DATA;
|
return SZ_ERROR_DATA;
|
||||||
}
|
}
|
||||||
|
|
||||||
curLen = ((rem < len) ? (unsigned)rem : len);
|
curLen = ((rem < len) ? (unsigned)rem : len);
|
||||||
pos = dicPos - rep0 + (dicPos < rep0 ? dicBufSize : 0);
|
pos = dicPos - rep0 + (dicPos < rep0 ? dicBufSize : 0);
|
||||||
|
|
||||||
@ -570,7 +570,7 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit
|
|||||||
while (dicPos < limit && buf < bufLimit);
|
while (dicPos < limit && buf < bufLimit);
|
||||||
|
|
||||||
NORMALIZE;
|
NORMALIZE;
|
||||||
|
|
||||||
p->buf = buf;
|
p->buf = buf;
|
||||||
p->range = range;
|
p->range = range;
|
||||||
p->code = code;
|
p->code = code;
|
||||||
@ -640,10 +640,10 @@ static int MY_FAST_CALL LzmaDec_DecodeReal2(CLzmaDec *p, SizeT limit, const Byte
|
|||||||
}
|
}
|
||||||
|
|
||||||
RINOK(LZMA_DECODE_REAL(p, limit2, bufLimit));
|
RINOK(LZMA_DECODE_REAL(p, limit2, bufLimit));
|
||||||
|
|
||||||
if (p->checkDicSize == 0 && p->processedPos >= p->prop.dicSize)
|
if (p->checkDicSize == 0 && p->processedPos >= p->prop.dicSize)
|
||||||
p->checkDicSize = p->prop.dicSize;
|
p->checkDicSize = p->prop.dicSize;
|
||||||
|
|
||||||
LzmaDec_WriteRem(p, limit);
|
LzmaDec_WriteRem(p, limit);
|
||||||
}
|
}
|
||||||
while (p->dicPos < limit && p->buf < bufLimit && p->remainLen < kMatchSpecLenStart);
|
while (p->dicPos < limit && p->buf < bufLimit && p->remainLen < kMatchSpecLenStart);
|
||||||
@ -879,7 +879,7 @@ SRes LzmaDec_DecodeToDic(CLzmaDec *p, SizeT dicLimit, const Byte *src, SizeT *sr
|
|||||||
{
|
{
|
||||||
SizeT inSize = *srcLen;
|
SizeT inSize = *srcLen;
|
||||||
(*srcLen) = 0;
|
(*srcLen) = 0;
|
||||||
|
|
||||||
*status = LZMA_STATUS_NOT_SPECIFIED;
|
*status = LZMA_STATUS_NOT_SPECIFIED;
|
||||||
|
|
||||||
if (p->remainLen > kMatchSpecLenStart)
|
if (p->remainLen > kMatchSpecLenStart)
|
||||||
@ -997,7 +997,7 @@ SRes LzmaDec_DecodeToDic(CLzmaDec *p, SizeT dicLimit, const Byte *src, SizeT *sr
|
|||||||
p->buf = p->tempBuf;
|
p->buf = p->tempBuf;
|
||||||
if (LzmaDec_DecodeReal2(p, dicLimit, p->buf) != 0)
|
if (LzmaDec_DecodeReal2(p, dicLimit, p->buf) != 0)
|
||||||
return SZ_ERROR_DATA;
|
return SZ_ERROR_DATA;
|
||||||
|
|
||||||
{
|
{
|
||||||
unsigned kkk = (unsigned)(p->buf - p->tempBuf);
|
unsigned kkk = (unsigned)(p->buf - p->tempBuf);
|
||||||
if (rem < kkk)
|
if (rem < kkk)
|
||||||
@ -1013,7 +1013,7 @@ SRes LzmaDec_DecodeToDic(CLzmaDec *p, SizeT dicLimit, const Byte *src, SizeT *sr
|
|||||||
p->tempBufSize = 0;
|
p->tempBufSize = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (p->code != 0)
|
if (p->code != 0)
|
||||||
return SZ_ERROR_DATA;
|
return SZ_ERROR_DATA;
|
||||||
*status = LZMA_STATUS_FINISHED_WITH_MARK;
|
*status = LZMA_STATUS_FINISHED_WITH_MARK;
|
||||||
@ -1083,12 +1083,12 @@ SRes LzmaProps_Decode(CLzmaProps *p, const Byte *data, unsigned size)
|
|||||||
{
|
{
|
||||||
UInt32 dicSize;
|
UInt32 dicSize;
|
||||||
Byte d;
|
Byte d;
|
||||||
|
|
||||||
if (size < LZMA_PROPS_SIZE)
|
if (size < LZMA_PROPS_SIZE)
|
||||||
return SZ_ERROR_UNSUPPORTED;
|
return SZ_ERROR_UNSUPPORTED;
|
||||||
else
|
else
|
||||||
dicSize = data[1] | ((UInt32)data[2] << 8) | ((UInt32)data[3] << 16) | ((UInt32)data[4] << 24);
|
dicSize = data[1] | ((UInt32)data[2] << 8) | ((UInt32)data[3] << 16) | ((UInt32)data[4] << 24);
|
||||||
|
|
||||||
if (dicSize < LZMA_DIC_MIN)
|
if (dicSize < LZMA_DIC_MIN)
|
||||||
dicSize = LZMA_DIC_MIN;
|
dicSize = LZMA_DIC_MIN;
|
||||||
p->dicSize = dicSize;
|
p->dicSize = dicSize;
|
||||||
|
@ -135,7 +135,7 @@ LzmaDec_Allocate* can return:
|
|||||||
SZ_ERROR_MEM - Memory allocation error
|
SZ_ERROR_MEM - Memory allocation error
|
||||||
SZ_ERROR_UNSUPPORTED - Unsupported properties
|
SZ_ERROR_UNSUPPORTED - Unsupported properties
|
||||||
*/
|
*/
|
||||||
|
|
||||||
SRes LzmaDec_AllocateProbs(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAllocPtr alloc);
|
SRes LzmaDec_AllocateProbs(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAllocPtr alloc);
|
||||||
void LzmaDec_FreeProbs(CLzmaDec *p, ISzAllocPtr alloc);
|
void LzmaDec_FreeProbs(CLzmaDec *p, ISzAllocPtr alloc);
|
||||||
|
|
||||||
@ -164,7 +164,7 @@ void LzmaDec_Free(CLzmaDec *p, ISzAllocPtr alloc);
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* LzmaDec_DecodeToDic
|
/* LzmaDec_DecodeToDic
|
||||||
|
|
||||||
The decoding to internal dictionary buffer (CLzmaDec::dic).
|
The decoding to internal dictionary buffer (CLzmaDec::dic).
|
||||||
You must manually update CLzmaDec::dicPos, if it reaches CLzmaDec::dicBufSize !!!
|
You must manually update CLzmaDec::dicPos, if it reaches CLzmaDec::dicBufSize !!!
|
||||||
|
|
||||||
|
@ -3,11 +3,11 @@ HISTORY of the LZMA SDK
|
|||||||
|
|
||||||
18.05 2018-04-30
|
18.05 2018-04-30
|
||||||
-------------------------
|
-------------------------
|
||||||
- The speed for LZMA/LZMA2 compressing was increased
|
- The speed for LZMA/LZMA2 compressing was increased
|
||||||
by 8% for fastest/fast compression levels and
|
by 8% for fastest/fast compression levels and
|
||||||
by 3% for normal/maximum compression levels.
|
by 3% for normal/maximum compression levels.
|
||||||
- Previous versions of 7-Zip could work incorrectly in "Large memory pages" mode in
|
- Previous versions of 7-Zip could work incorrectly in "Large memory pages" mode in
|
||||||
Windows 10 because of some BUG with "Large Pages" in Windows 10.
|
Windows 10 because of some BUG with "Large Pages" in Windows 10.
|
||||||
Now 7-Zip doesn't use "Large Pages" on Windows 10 up to revision 1709 (16299).
|
Now 7-Zip doesn't use "Large Pages" on Windows 10 up to revision 1709 (16299).
|
||||||
- The BUG was fixed in Lzma2Enc.c
|
- The BUG was fixed in Lzma2Enc.c
|
||||||
Lzma2Enc_Encode2() function worked incorretly,
|
Lzma2Enc_Encode2() function worked incorretly,
|
||||||
@ -16,7 +16,7 @@ HISTORY of the LZMA SDK
|
|||||||
|
|
||||||
18.03 beta 2018-03-04
|
18.03 beta 2018-03-04
|
||||||
-------------------------
|
-------------------------
|
||||||
- Asm\x86\LzmaDecOpt.asm: new optimized LZMA decoder written in asm
|
- Asm\x86\LzmaDecOpt.asm: new optimized LZMA decoder written in asm
|
||||||
for x64 with about 30% higher speed than main version of LZMA decoder written in C.
|
for x64 with about 30% higher speed than main version of LZMA decoder written in C.
|
||||||
- The speed for single-thread LZMA/LZMA2 decoder written in C was increased by 3%.
|
- The speed for single-thread LZMA/LZMA2 decoder written in C was increased by 3%.
|
||||||
- 7-Zip now can use multi-threading for 7z/LZMA2 decoding,
|
- 7-Zip now can use multi-threading for 7z/LZMA2 decoding,
|
||||||
@ -35,7 +35,7 @@ HISTORY of the LZMA SDK
|
|||||||
18.00 beta 2019-01-10
|
18.00 beta 2019-01-10
|
||||||
-------------------------
|
-------------------------
|
||||||
- The BUG in xz encoder was fixed:
|
- The BUG in xz encoder was fixed:
|
||||||
There was memory leak of 16 KB for each file compressed with
|
There was memory leak of 16 KB for each file compressed with
|
||||||
xz compression method, if additional filter was used.
|
xz compression method, if additional filter was used.
|
||||||
|
|
||||||
|
|
||||||
@ -44,7 +44,7 @@ HISTORY of the LZMA SDK
|
|||||||
- Minor speed optimization for LZMA2 (xz and 7z) multi-threading compression.
|
- Minor speed optimization for LZMA2 (xz and 7z) multi-threading compression.
|
||||||
7-Zip now uses additional memory buffers for multi-block LZMA2 compression.
|
7-Zip now uses additional memory buffers for multi-block LZMA2 compression.
|
||||||
CPU utilization was slightly improved.
|
CPU utilization was slightly improved.
|
||||||
- 7-zip now creates multi-block xz archives by default. Block size can be
|
- 7-zip now creates multi-block xz archives by default. Block size can be
|
||||||
specified with -ms[Size]{m|g} switch.
|
specified with -ms[Size]{m|g} switch.
|
||||||
- xz decoder now can unpack random block from multi-block xz archives.
|
- xz decoder now can unpack random block from multi-block xz archives.
|
||||||
- 7-Zip command line: @listfile now doesn't work after -- switch.
|
- 7-Zip command line: @listfile now doesn't work after -- switch.
|
||||||
@ -55,7 +55,7 @@ HISTORY of the LZMA SDK
|
|||||||
|
|
||||||
17.00 beta 2017-04-29
|
17.00 beta 2017-04-29
|
||||||
-------------------------
|
-------------------------
|
||||||
- NewHandler.h / NewHandler.cpp:
|
- NewHandler.h / NewHandler.cpp:
|
||||||
now it redefines operator new() only for old MSVC compilers (_MSC_VER < 1900).
|
now it redefines operator new() only for old MSVC compilers (_MSC_VER < 1900).
|
||||||
- C/7zTypes.h : the names of variables in interface structures were changed (vt).
|
- C/7zTypes.h : the names of variables in interface structures were changed (vt).
|
||||||
- Some bugs were fixed. 7-Zip could crash in some cases.
|
- Some bugs were fixed. 7-Zip could crash in some cases.
|
||||||
@ -76,51 +76,51 @@ HISTORY of the LZMA SDK
|
|||||||
16.02 2016-05-21
|
16.02 2016-05-21
|
||||||
-------------------------
|
-------------------------
|
||||||
- The BUG in 16.00 - 16.01 was fixed:
|
- The BUG in 16.00 - 16.01 was fixed:
|
||||||
Split Handler (SplitHandler.cpp) returned incorrect
|
Split Handler (SplitHandler.cpp) returned incorrect
|
||||||
total size value (kpidSize) for split archives.
|
total size value (kpidSize) for split archives.
|
||||||
|
|
||||||
|
|
||||||
16.01 2016-05-19
|
16.01 2016-05-19
|
||||||
-------------------------
|
-------------------------
|
||||||
- Some internal changes to reduce the number of compiler warnings.
|
- Some internal changes to reduce the number of compiler warnings.
|
||||||
|
|
||||||
|
|
||||||
16.00 2016-05-10
|
16.00 2016-05-10
|
||||||
-------------------------
|
-------------------------
|
||||||
- Some bugs were fixed.
|
- Some bugs were fixed.
|
||||||
|
|
||||||
|
|
||||||
15.12 2015-11-19
|
15.12 2015-11-19
|
||||||
-------------------------
|
-------------------------
|
||||||
- The BUG in C version of 7z decoder was fixed:
|
- The BUG in C version of 7z decoder was fixed:
|
||||||
7zDec.c : SzDecodeLzma2()
|
7zDec.c : SzDecodeLzma2()
|
||||||
7z decoder could mistakenly report about decoding error for some 7z archives
|
7z decoder could mistakenly report about decoding error for some 7z archives
|
||||||
that use LZMA2 compression method.
|
that use LZMA2 compression method.
|
||||||
The probability to get that mistaken decoding error report was about
|
The probability to get that mistaken decoding error report was about
|
||||||
one error per 16384 solid blocks for solid blocks larger than 16 KB (compressed size).
|
one error per 16384 solid blocks for solid blocks larger than 16 KB (compressed size).
|
||||||
- The BUG (in 9.26-15.11) in C version of 7z decoder was fixed:
|
- The BUG (in 9.26-15.11) in C version of 7z decoder was fixed:
|
||||||
7zArcIn.c : SzReadHeader2()
|
7zArcIn.c : SzReadHeader2()
|
||||||
7z decoder worked incorrectly for 7z archives that contain
|
7z decoder worked incorrectly for 7z archives that contain
|
||||||
empty solid blocks, that can be placed to 7z archive, if some file is
|
empty solid blocks, that can be placed to 7z archive, if some file is
|
||||||
unavailable for reading during archive creation.
|
unavailable for reading during archive creation.
|
||||||
|
|
||||||
|
|
||||||
15.09 beta 2015-10-16
|
15.09 beta 2015-10-16
|
||||||
-------------------------
|
-------------------------
|
||||||
- The BUG in LZMA / LZMA2 encoding code was fixed.
|
- The BUG in LZMA / LZMA2 encoding code was fixed.
|
||||||
The BUG in LzFind.c::MatchFinder_ReadBlock() function.
|
The BUG in LzFind.c::MatchFinder_ReadBlock() function.
|
||||||
If input data size is larger than (4 GiB - dictionary_size),
|
If input data size is larger than (4 GiB - dictionary_size),
|
||||||
the following code worked incorrectly:
|
the following code worked incorrectly:
|
||||||
- LZMA : LzmaEnc_MemEncode(), LzmaEncode() : LZMA encoding functions
|
- LZMA : LzmaEnc_MemEncode(), LzmaEncode() : LZMA encoding functions
|
||||||
for compressing from memory to memory.
|
for compressing from memory to memory.
|
||||||
That BUG is not related to LZMA encoder version that works via streams.
|
That BUG is not related to LZMA encoder version that works via streams.
|
||||||
- LZMA2 : multi-threaded version of LZMA2 encoder worked incorrectly, if
|
- LZMA2 : multi-threaded version of LZMA2 encoder worked incorrectly, if
|
||||||
default value of chunk size (CLzma2EncProps::blockSize) is changed
|
default value of chunk size (CLzma2EncProps::blockSize) is changed
|
||||||
to value larger than (4 GiB - dictionary_size).
|
to value larger than (4 GiB - dictionary_size).
|
||||||
|
|
||||||
|
|
||||||
9.38 beta 2015-01-03
|
9.38 beta 2015-01-03
|
||||||
-------------------------
|
-------------------------
|
||||||
- The BUG in 9.31-9.37 was fixed:
|
- The BUG in 9.31-9.37 was fixed:
|
||||||
IArchiveGetRawProps interface was disabled for 7z archives.
|
IArchiveGetRawProps interface was disabled for 7z archives.
|
||||||
- The BUG in 9.26-9.36 was fixed:
|
- The BUG in 9.26-9.36 was fixed:
|
||||||
@ -128,10 +128,10 @@ HISTORY of the LZMA SDK
|
|||||||
|
|
||||||
|
|
||||||
9.36 beta 2014-12-26
|
9.36 beta 2014-12-26
|
||||||
-------------------------
|
-------------------------
|
||||||
- The BUG in command line version was fixed:
|
- The BUG in command line version was fixed:
|
||||||
7-Zip created temporary archive in current folder during update archive
|
7-Zip created temporary archive in current folder during update archive
|
||||||
operation, if -w{Path} switch was not specified.
|
operation, if -w{Path} switch was not specified.
|
||||||
The fixed 7-Zip creates temporary archive in folder that contains updated archive.
|
The fixed 7-Zip creates temporary archive in folder that contains updated archive.
|
||||||
- The BUG in 9.33-9.35 was fixed:
|
- The BUG in 9.33-9.35 was fixed:
|
||||||
7-Zip silently ignored file reading errors during 7z or gz archive creation,
|
7-Zip silently ignored file reading errors during 7z or gz archive creation,
|
||||||
@ -140,14 +140,14 @@ HISTORY of the LZMA SDK
|
|||||||
|
|
||||||
|
|
||||||
9.35 beta 2014-12-07
|
9.35 beta 2014-12-07
|
||||||
-------------------------
|
-------------------------
|
||||||
- 7zr.exe now support AES encryption.
|
- 7zr.exe now support AES encryption.
|
||||||
- SFX mudules were added to LZMA SDK
|
- SFX mudules were added to LZMA SDK
|
||||||
- Some bugs were fixed.
|
- Some bugs were fixed.
|
||||||
|
|
||||||
|
|
||||||
9.21 beta 2011-04-11
|
9.21 beta 2011-04-11
|
||||||
-------------------------
|
-------------------------
|
||||||
- New class FString for file names at file systems.
|
- New class FString for file names at file systems.
|
||||||
- Speed optimization in CRC code for big-endian CPUs.
|
- Speed optimization in CRC code for big-endian CPUs.
|
||||||
- The BUG in Lzma2Dec.c was fixed:
|
- The BUG in Lzma2Dec.c was fixed:
|
||||||
@ -155,7 +155,7 @@ HISTORY of the LZMA SDK
|
|||||||
|
|
||||||
|
|
||||||
9.18 beta 2010-11-02
|
9.18 beta 2010-11-02
|
||||||
-------------------------
|
-------------------------
|
||||||
- New small SFX module for installers (SfxSetup).
|
- New small SFX module for installers (SfxSetup).
|
||||||
|
|
||||||
|
|
||||||
@ -168,7 +168,7 @@ HISTORY of the LZMA SDK
|
|||||||
9.11 beta 2010-03-15
|
9.11 beta 2010-03-15
|
||||||
-------------------------
|
-------------------------
|
||||||
- PPMd compression method support
|
- PPMd compression method support
|
||||||
|
|
||||||
|
|
||||||
9.09 2009-12-12
|
9.09 2009-12-12
|
||||||
-------------------------
|
-------------------------
|
||||||
@ -202,7 +202,7 @@ HISTORY of the LZMA SDK
|
|||||||
4.61 beta 2008-11-23
|
4.61 beta 2008-11-23
|
||||||
-------------------------
|
-------------------------
|
||||||
- The bug in ANSI-C LZMA Decoder was fixed:
|
- The bug in ANSI-C LZMA Decoder was fixed:
|
||||||
If encoded stream was corrupted, decoder could access memory
|
If encoded stream was corrupted, decoder could access memory
|
||||||
outside of allocated range.
|
outside of allocated range.
|
||||||
- Some changes in ANSI-C 7z Decoder interfaces.
|
- Some changes in ANSI-C 7z Decoder interfaces.
|
||||||
- LZMA SDK is placed in the public domain.
|
- LZMA SDK is placed in the public domain.
|
||||||
@ -216,7 +216,7 @@ HISTORY of the LZMA SDK
|
|||||||
4.59 beta 2008-08-13
|
4.59 beta 2008-08-13
|
||||||
-------------------------
|
-------------------------
|
||||||
- The bug was fixed:
|
- The bug was fixed:
|
||||||
LZMA Encoder in fast compression mode could access memory outside of
|
LZMA Encoder in fast compression mode could access memory outside of
|
||||||
allocated range in some rare cases.
|
allocated range in some rare cases.
|
||||||
|
|
||||||
|
|
||||||
@ -229,7 +229,7 @@ HISTORY of the LZMA SDK
|
|||||||
|
|
||||||
4.57 2007-12-12
|
4.57 2007-12-12
|
||||||
-------------------------
|
-------------------------
|
||||||
- Speed optimizations in ?++ LZMA Decoder.
|
- Speed optimizations in ?++ LZMA Decoder.
|
||||||
- Small changes for more compatibility with some C/C++ compilers.
|
- Small changes for more compatibility with some C/C++ compilers.
|
||||||
|
|
||||||
|
|
||||||
@ -239,36 +239,36 @@ HISTORY of the LZMA SDK
|
|||||||
- now it supports BCJ and BCJ2 filters
|
- now it supports BCJ and BCJ2 filters
|
||||||
- now it supports files larger than 4 GB.
|
- now it supports files larger than 4 GB.
|
||||||
- now it supports "Last Write Time" field for files.
|
- now it supports "Last Write Time" field for files.
|
||||||
- C++ code for .7z archives compressing/decompressing from 7-zip
|
- C++ code for .7z archives compressing/decompressing from 7-zip
|
||||||
was included to LZMA SDK.
|
was included to LZMA SDK.
|
||||||
|
|
||||||
|
|
||||||
4.43 2006-06-04
|
4.43 2006-06-04
|
||||||
-------------------------
|
-------------------------
|
||||||
- Small changes for more compatibility with some C/C++ compilers.
|
- Small changes for more compatibility with some C/C++ compilers.
|
||||||
|
|
||||||
|
|
||||||
4.42 2006-05-15
|
4.42 2006-05-15
|
||||||
-------------------------
|
-------------------------
|
||||||
- Small changes in .h files in ANSI-C version.
|
- Small changes in .h files in ANSI-C version.
|
||||||
|
|
||||||
|
|
||||||
4.39 beta 2006-04-14
|
4.39 beta 2006-04-14
|
||||||
-------------------------
|
-------------------------
|
||||||
- The bug in versions 4.33b:4.38b was fixed:
|
- The bug in versions 4.33b:4.38b was fixed:
|
||||||
C++ version of LZMA encoder could not correctly compress
|
C++ version of LZMA encoder could not correctly compress
|
||||||
files larger than 2 GB with HC4 match finder (-mfhc4).
|
files larger than 2 GB with HC4 match finder (-mfhc4).
|
||||||
|
|
||||||
|
|
||||||
4.37 beta 2005-04-06
|
4.37 beta 2005-04-06
|
||||||
-------------------------
|
-------------------------
|
||||||
- Fixes in C++ code: code could no be compiled if _NO_EXCEPTIONS was defined.
|
- Fixes in C++ code: code could no be compiled if _NO_EXCEPTIONS was defined.
|
||||||
|
|
||||||
|
|
||||||
4.35 beta 2005-03-02
|
4.35 beta 2005-03-02
|
||||||
-------------------------
|
-------------------------
|
||||||
- The bug was fixed in C++ version of LZMA Decoder:
|
- The bug was fixed in C++ version of LZMA Decoder:
|
||||||
If encoded stream was corrupted, decoder could access memory
|
If encoded stream was corrupted, decoder could access memory
|
||||||
outside of allocated range.
|
outside of allocated range.
|
||||||
|
|
||||||
|
|
||||||
@ -339,7 +339,7 @@ HISTORY of the LZMA SDK
|
|||||||
|
|
||||||
4.17 2005-04-18
|
4.17 2005-04-18
|
||||||
-------------------------
|
-------------------------
|
||||||
- New example for RAM->RAM compressing/decompressing:
|
- New example for RAM->RAM compressing/decompressing:
|
||||||
LZMA + BCJ (filter for x86 code):
|
LZMA + BCJ (filter for x86 code):
|
||||||
- LzmaRam.h
|
- LzmaRam.h
|
||||||
- LzmaRam.cpp
|
- LzmaRam.cpp
|
||||||
@ -350,11 +350,11 @@ HISTORY of the LZMA SDK
|
|||||||
|
|
||||||
4.16 2005-03-29
|
4.16 2005-03-29
|
||||||
-------------------------
|
-------------------------
|
||||||
- The bug was fixed in LzmaDecode.c (ANSI-C LZMA Decoder):
|
- The bug was fixed in LzmaDecode.c (ANSI-C LZMA Decoder):
|
||||||
If _LZMA_OUT_READ was defined, and if encoded stream was corrupted,
|
If _LZMA_OUT_READ was defined, and if encoded stream was corrupted,
|
||||||
decoder could access memory outside of allocated range.
|
decoder could access memory outside of allocated range.
|
||||||
- Speed optimization of ANSI-C LZMA Decoder (now it's about 20% faster).
|
- Speed optimization of ANSI-C LZMA Decoder (now it's about 20% faster).
|
||||||
Old version of LZMA Decoder now is in file LzmaDecodeSize.c.
|
Old version of LZMA Decoder now is in file LzmaDecodeSize.c.
|
||||||
LzmaDecodeSize.c can provide slightly smaller code than LzmaDecode.c
|
LzmaDecodeSize.c can provide slightly smaller code than LzmaDecode.c
|
||||||
- Small speed optimization in LZMA C++ code
|
- Small speed optimization in LZMA C++ code
|
||||||
- filter for SPARC's code was added
|
- filter for SPARC's code was added
|
||||||
@ -369,7 +369,7 @@ HISTORY of the LZMA SDK
|
|||||||
|
|
||||||
4.05 2004-08-25
|
4.05 2004-08-25
|
||||||
-------------------------
|
-------------------------
|
||||||
- Source code of filters for x86, IA-64, ARM, ARM-Thumb
|
- Source code of filters for x86, IA-64, ARM, ARM-Thumb
|
||||||
and PowerPC code was included to SDK
|
and PowerPC code was included to SDK
|
||||||
- Some internal minor changes
|
- Some internal minor changes
|
||||||
|
|
||||||
@ -381,8 +381,8 @@ HISTORY of the LZMA SDK
|
|||||||
|
|
||||||
4.03 2004-06-18
|
4.03 2004-06-18
|
||||||
-------------------------
|
-------------------------
|
||||||
- "Benchmark" command was added. It measures compressing
|
- "Benchmark" command was added. It measures compressing
|
||||||
and decompressing speed and shows rating values.
|
and decompressing speed and shows rating values.
|
||||||
Also it checks hardware errors.
|
Also it checks hardware errors.
|
||||||
|
|
||||||
|
|
||||||
@ -411,7 +411,7 @@ HISTORY of the LZMA SDK
|
|||||||
|
|
||||||
HISTORY of the LZMA
|
HISTORY of the LZMA
|
||||||
-------------------
|
-------------------
|
||||||
2001-2008: Improvements to LZMA compressing/decompressing code,
|
2001-2008: Improvements to LZMA compressing/decompressing code,
|
||||||
keeping compatibility with original LZMA format
|
keeping compatibility with original LZMA format
|
||||||
1996-2001: Development of LZMA compression format
|
1996-2001: Development of LZMA compression format
|
||||||
|
|
||||||
@ -419,6 +419,6 @@ HISTORY of the LZMA
|
|||||||
|
|
||||||
2001-08-30: LZMA compression was added to 7-Zip
|
2001-08-30: LZMA compression was added to 7-Zip
|
||||||
1999-01-02: First version of 7-Zip was released
|
1999-01-02: First version of 7-Zip was released
|
||||||
|
|
||||||
|
|
||||||
End of document
|
End of document
|
||||||
|
@ -2,15 +2,15 @@ LZMA SDK 18.05
|
|||||||
--------------
|
--------------
|
||||||
|
|
||||||
LZMA SDK provides the documentation, samples, header files,
|
LZMA SDK provides the documentation, samples, header files,
|
||||||
libraries, and tools you need to develop applications that
|
libraries, and tools you need to develop applications that
|
||||||
use 7z / LZMA / LZMA2 / XZ compression.
|
use 7z / LZMA / LZMA2 / XZ compression.
|
||||||
|
|
||||||
LZMA is an improved version of famous LZ77 compression algorithm.
|
LZMA is an improved version of famous LZ77 compression algorithm.
|
||||||
It was improved in way of maximum increasing of compression ratio,
|
It was improved in way of maximum increasing of compression ratio,
|
||||||
keeping high decompression speed and low memory requirements for
|
keeping high decompression speed and low memory requirements for
|
||||||
decompressing.
|
decompressing.
|
||||||
|
|
||||||
LZMA2 is a LZMA based compression method. LZMA2 provides better
|
LZMA2 is a LZMA based compression method. LZMA2 provides better
|
||||||
multithreading support for compression than LZMA and some other improvements.
|
multithreading support for compression than LZMA and some other improvements.
|
||||||
|
|
||||||
7z is a file format for data compression and file archiving.
|
7z is a file format for data compression and file archiving.
|
||||||
@ -19,7 +19,7 @@ multithreading support for compression than LZMA and some other improvements.
|
|||||||
7z also supports AES-256 based encryption.
|
7z also supports AES-256 based encryption.
|
||||||
|
|
||||||
XZ is a file format for data compression that uses LZMA2 compression.
|
XZ is a file format for data compression that uses LZMA2 compression.
|
||||||
XZ format provides additional features: SHA/CRC check, filters for
|
XZ format provides additional features: SHA/CRC check, filters for
|
||||||
improved compression ratio, splitting to blocks and streams,
|
improved compression ratio, splitting to blocks and streams,
|
||||||
|
|
||||||
|
|
||||||
@ -33,11 +33,11 @@ Some code in LZMA SDK is based on public domain code from another developers:
|
|||||||
1) PPMd var.H (2001): Dmitry Shkarin
|
1) PPMd var.H (2001): Dmitry Shkarin
|
||||||
2) SHA-256: Wei Dai (Crypto++ library)
|
2) SHA-256: Wei Dai (Crypto++ library)
|
||||||
|
|
||||||
Anyone is free to copy, modify, publish, use, compile, sell, or distribute the
|
Anyone is free to copy, modify, publish, use, compile, sell, or distribute the
|
||||||
original LZMA SDK code, either in source code form or as a compiled binary, for
|
original LZMA SDK code, either in source code form or as a compiled binary, for
|
||||||
any purpose, commercial or non-commercial, and by any means.
|
any purpose, commercial or non-commercial, and by any means.
|
||||||
|
|
||||||
LZMA SDK code is compatible with open source licenses, for example, you can
|
LZMA SDK code is compatible with open source licenses, for example, you can
|
||||||
include it to GNU GPL or GNU LGPL code.
|
include it to GNU GPL or GNU LGPL code.
|
||||||
|
|
||||||
|
|
||||||
@ -60,7 +60,7 @@ LZMA SDK Contents
|
|||||||
- SFX modules for installers.
|
- SFX modules for installers.
|
||||||
|
|
||||||
|
|
||||||
UNIX/Linux version
|
UNIX/Linux version
|
||||||
------------------
|
------------------
|
||||||
To compile C++ version of file->file LZMA encoding, go to directory
|
To compile C++ version of file->file LZMA encoding, go to directory
|
||||||
CPP/7zip/Bundles/LzmaCon
|
CPP/7zip/Bundles/LzmaCon
|
||||||
@ -68,11 +68,11 @@ and call make to recompile it:
|
|||||||
make -f makefile.gcc clean all
|
make -f makefile.gcc clean all
|
||||||
|
|
||||||
In some UNIX/Linux versions you must compile LZMA with static libraries.
|
In some UNIX/Linux versions you must compile LZMA with static libraries.
|
||||||
To compile with static libraries, you can use
|
To compile with static libraries, you can use
|
||||||
LIB = -lm -static
|
LIB = -lm -static
|
||||||
|
|
||||||
Also you can use p7zip (port of 7-Zip for POSIX systems like Unix or Linux):
|
Also you can use p7zip (port of 7-Zip for POSIX systems like Unix or Linux):
|
||||||
|
|
||||||
http://p7zip.sourceforge.net/
|
http://p7zip.sourceforge.net/
|
||||||
|
|
||||||
|
|
||||||
@ -120,7 +120,7 @@ C/ - C files (compression / decompression and other)
|
|||||||
7z - 7z decoder program (decoding 7z files)
|
7z - 7z decoder program (decoding 7z files)
|
||||||
Lzma - LZMA program (file->file LZMA encoder/decoder).
|
Lzma - LZMA program (file->file LZMA encoder/decoder).
|
||||||
LzmaLib - LZMA library (.DLL for Windows)
|
LzmaLib - LZMA library (.DLL for Windows)
|
||||||
SfxSetup - small SFX module for installers
|
SfxSetup - small SFX module for installers
|
||||||
|
|
||||||
CPP/ -- CPP files
|
CPP/ -- CPP files
|
||||||
|
|
||||||
@ -135,7 +135,7 @@ CPP/ -- CPP files
|
|||||||
7z - 7z C++ Encoder/Decoder
|
7z - 7z C++ Encoder/Decoder
|
||||||
|
|
||||||
Bundles - Modules that are bundles of other modules (files)
|
Bundles - Modules that are bundles of other modules (files)
|
||||||
|
|
||||||
Alone7z - 7zr.exe: Standalone 7-Zip console program (reduced version)
|
Alone7z - 7zr.exe: Standalone 7-Zip console program (reduced version)
|
||||||
Format7zExtractR - 7zxr.dll: Reduced version of 7z DLL: extracting from 7z/LZMA/BCJ/BCJ2.
|
Format7zExtractR - 7zxr.dll: Reduced version of 7z DLL: extracting from 7z/LZMA/BCJ/BCJ2.
|
||||||
Format7zR - 7zr.dll: Reduced version of 7z DLL: extracting/compressing to 7z/LZMA/BCJ/BCJ2
|
Format7zR - 7zr.dll: Reduced version of 7z DLL: extracting/compressing to 7z/LZMA/BCJ/BCJ2
|
||||||
@ -152,7 +152,7 @@ CPP/ -- CPP files
|
|||||||
Crypto - files for encryption / decompression
|
Crypto - files for encryption / decompression
|
||||||
|
|
||||||
UI - User Interface files
|
UI - User Interface files
|
||||||
|
|
||||||
Client7z - Test application for 7za.dll, 7zr.dll, 7zxr.dll
|
Client7z - Test application for 7za.dll, 7zr.dll, 7zxr.dll
|
||||||
Common - Common UI files
|
Common - Common UI files
|
||||||
Console - Code for console program (7z.exe)
|
Console - Code for console program (7z.exe)
|
||||||
@ -178,7 +178,7 @@ Java/ - Java files
|
|||||||
RangeCoder - Range Coder (special code of compression/decompression)
|
RangeCoder - Range Coder (special code of compression/decompression)
|
||||||
|
|
||||||
|
|
||||||
Note:
|
Note:
|
||||||
Asm / C / C++ source code of LZMA SDK is part of 7-Zip's source code.
|
Asm / C / C++ source code of LZMA SDK is part of 7-Zip's source code.
|
||||||
7-Zip's source code can be downloaded from 7-Zip's SourceForge page:
|
7-Zip's source code can be downloaded from 7-Zip's SourceForge page:
|
||||||
|
|
||||||
@ -190,13 +190,13 @@ LZMA features
|
|||||||
-------------
|
-------------
|
||||||
- Variable dictionary size (up to 1 GB)
|
- Variable dictionary size (up to 1 GB)
|
||||||
- Estimated compressing speed: about 2 MB/s on 2 GHz CPU
|
- Estimated compressing speed: about 2 MB/s on 2 GHz CPU
|
||||||
- Estimated decompressing speed:
|
- Estimated decompressing speed:
|
||||||
- 20-30 MB/s on modern 2 GHz cpu
|
- 20-30 MB/s on modern 2 GHz cpu
|
||||||
- 1-2 MB/s on 200 MHz simple RISC cpu: (ARM, MIPS, PowerPC)
|
- 1-2 MB/s on 200 MHz simple RISC cpu: (ARM, MIPS, PowerPC)
|
||||||
- Small memory requirements for decompressing (16 KB + DictionarySize)
|
- Small memory requirements for decompressing (16 KB + DictionarySize)
|
||||||
- Small code size for decompressing: 5-8 KB
|
- Small code size for decompressing: 5-8 KB
|
||||||
|
|
||||||
LZMA decoder uses only integer operations and can be
|
LZMA decoder uses only integer operations and can be
|
||||||
implemented in any modern 32-bit CPU (or on 16-bit CPU with some conditions).
|
implemented in any modern 32-bit CPU (or on 16-bit CPU with some conditions).
|
||||||
|
|
||||||
Some critical operations that affect the speed of LZMA decompression:
|
Some critical operations that affect the speed of LZMA decompression:
|
||||||
@ -205,7 +205,7 @@ Some critical operations that affect the speed of LZMA decompression:
|
|||||||
3) 32-bit shift and arithmetic operations
|
3) 32-bit shift and arithmetic operations
|
||||||
|
|
||||||
The speed of LZMA decompressing mostly depends from CPU speed.
|
The speed of LZMA decompressing mostly depends from CPU speed.
|
||||||
Memory speed has no big meaning. But if your CPU has small data cache,
|
Memory speed has no big meaning. But if your CPU has small data cache,
|
||||||
overall weight of memory speed will slightly increase.
|
overall weight of memory speed will slightly increase.
|
||||||
|
|
||||||
|
|
||||||
@ -221,53 +221,53 @@ Usage: LZMA <e|d> inputFile outputFile [<switches>...]
|
|||||||
|
|
||||||
d: decode file
|
d: decode file
|
||||||
|
|
||||||
b: Benchmark. There are two tests: compressing and decompressing
|
b: Benchmark. There are two tests: compressing and decompressing
|
||||||
with LZMA method. Benchmark shows rating in MIPS (million
|
with LZMA method. Benchmark shows rating in MIPS (million
|
||||||
instructions per second). Rating value is calculated from
|
instructions per second). Rating value is calculated from
|
||||||
measured speed and it is normalized with Intel's Core 2 results.
|
measured speed and it is normalized with Intel's Core 2 results.
|
||||||
Also Benchmark checks possible hardware errors (RAM
|
Also Benchmark checks possible hardware errors (RAM
|
||||||
errors in most cases). Benchmark uses these settings:
|
errors in most cases). Benchmark uses these settings:
|
||||||
(-a1, -d21, -fb32, -mfbt4). You can change only -d parameter.
|
(-a1, -d21, -fb32, -mfbt4). You can change only -d parameter.
|
||||||
Also you can change the number of iterations. Example for 30 iterations:
|
Also you can change the number of iterations. Example for 30 iterations:
|
||||||
LZMA b 30
|
LZMA b 30
|
||||||
Default number of iterations is 10.
|
Default number of iterations is 10.
|
||||||
|
|
||||||
<Switches>
|
<Switches>
|
||||||
|
|
||||||
|
|
||||||
-a{N}: set compression mode 0 = fast, 1 = normal
|
-a{N}: set compression mode 0 = fast, 1 = normal
|
||||||
default: 1 (normal)
|
default: 1 (normal)
|
||||||
|
|
||||||
d{N}: Sets Dictionary size - [0, 30], default: 23 (8MB)
|
d{N}: Sets Dictionary size - [0, 30], default: 23 (8MB)
|
||||||
The maximum value for dictionary size is 1 GB = 2^30 bytes.
|
The maximum value for dictionary size is 1 GB = 2^30 bytes.
|
||||||
Dictionary size is calculated as DictionarySize = 2^N bytes.
|
Dictionary size is calculated as DictionarySize = 2^N bytes.
|
||||||
For decompressing file compressed by LZMA method with dictionary
|
For decompressing file compressed by LZMA method with dictionary
|
||||||
size D = 2^N you need about D bytes of memory (RAM).
|
size D = 2^N you need about D bytes of memory (RAM).
|
||||||
|
|
||||||
-fb{N}: set number of fast bytes - [5, 273], default: 128
|
-fb{N}: set number of fast bytes - [5, 273], default: 128
|
||||||
Usually big number gives a little bit better compression ratio
|
Usually big number gives a little bit better compression ratio
|
||||||
and slower compression process.
|
and slower compression process.
|
||||||
|
|
||||||
-lc{N}: set number of literal context bits - [0, 8], default: 3
|
-lc{N}: set number of literal context bits - [0, 8], default: 3
|
||||||
Sometimes lc=4 gives gain for big files.
|
Sometimes lc=4 gives gain for big files.
|
||||||
|
|
||||||
-lp{N}: set number of literal pos bits - [0, 4], default: 0
|
-lp{N}: set number of literal pos bits - [0, 4], default: 0
|
||||||
lp switch is intended for periodical data when period is
|
lp switch is intended for periodical data when period is
|
||||||
equal 2^N. For example, for 32-bit (4 bytes)
|
equal 2^N. For example, for 32-bit (4 bytes)
|
||||||
periodical data you can use lp=2. Often it's better to set lc0,
|
periodical data you can use lp=2. Often it's better to set lc0,
|
||||||
if you change lp switch.
|
if you change lp switch.
|
||||||
|
|
||||||
-pb{N}: set number of pos bits - [0, 4], default: 2
|
-pb{N}: set number of pos bits - [0, 4], default: 2
|
||||||
pb switch is intended for periodical data
|
pb switch is intended for periodical data
|
||||||
when period is equal 2^N.
|
when period is equal 2^N.
|
||||||
|
|
||||||
-mf{MF_ID}: set Match Finder. Default: bt4.
|
-mf{MF_ID}: set Match Finder. Default: bt4.
|
||||||
Algorithms from hc* group doesn't provide good compression
|
Algorithms from hc* group doesn't provide good compression
|
||||||
ratio, but they often works pretty fast in combination with
|
ratio, but they often works pretty fast in combination with
|
||||||
fast mode (-a0).
|
fast mode (-a0).
|
||||||
|
|
||||||
Memory requirements depend from dictionary size
|
Memory requirements depend from dictionary size
|
||||||
(parameter "d" in table below).
|
(parameter "d" in table below).
|
||||||
|
|
||||||
MF_ID Memory Description
|
MF_ID Memory Description
|
||||||
|
|
||||||
@ -276,8 +276,8 @@ Usage: LZMA <e|d> inputFile outputFile [<switches>...]
|
|||||||
bt4 d * 11.5 + 4MB Binary Tree with 4 bytes hashing.
|
bt4 d * 11.5 + 4MB Binary Tree with 4 bytes hashing.
|
||||||
hc4 d * 7.5 + 4MB Hash Chain with 4 bytes hashing.
|
hc4 d * 7.5 + 4MB Hash Chain with 4 bytes hashing.
|
||||||
|
|
||||||
-eos: write End Of Stream marker. By default LZMA doesn't write
|
-eos: write End Of Stream marker. By default LZMA doesn't write
|
||||||
eos marker, since LZMA decoder knows uncompressed size
|
eos marker, since LZMA decoder knows uncompressed size
|
||||||
stored in .lzma file header.
|
stored in .lzma file header.
|
||||||
|
|
||||||
-si: Read data from stdin (it will write End Of Stream marker).
|
-si: Read data from stdin (it will write End Of Stream marker).
|
||||||
@ -286,16 +286,16 @@ Usage: LZMA <e|d> inputFile outputFile [<switches>...]
|
|||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
1) LZMA e file.bin file.lzma -d16 -lc0
|
1) LZMA e file.bin file.lzma -d16 -lc0
|
||||||
|
|
||||||
compresses file.bin to file.lzma with 64 KB dictionary (2^16=64K)
|
compresses file.bin to file.lzma with 64 KB dictionary (2^16=64K)
|
||||||
and 0 literal context bits. -lc0 allows to reduce memory requirements
|
and 0 literal context bits. -lc0 allows to reduce memory requirements
|
||||||
for decompression.
|
for decompression.
|
||||||
|
|
||||||
|
|
||||||
2) LZMA e file.bin file.lzma -lc0 -lp2
|
2) LZMA e file.bin file.lzma -lc0 -lp2
|
||||||
|
|
||||||
compresses file.bin to file.lzma with settings suitable
|
compresses file.bin to file.lzma with settings suitable
|
||||||
for 32-bit periodical data (for example, ARM or MIPS code).
|
for 32-bit periodical data (for example, ARM or MIPS code).
|
||||||
|
|
||||||
3) LZMA d file.lzma file.bin
|
3) LZMA d file.lzma file.bin
|
||||||
@ -309,9 +309,9 @@ Compression ratio hints
|
|||||||
Recommendations
|
Recommendations
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
To increase the compression ratio for LZMA compressing it's desirable
|
To increase the compression ratio for LZMA compressing it's desirable
|
||||||
to have aligned data (if it's possible) and also it's desirable to locate
|
to have aligned data (if it's possible) and also it's desirable to locate
|
||||||
data in such order, where code is grouped in one place and data is
|
data in such order, where code is grouped in one place and data is
|
||||||
grouped in other place (it's better than such mixing: code, data, code,
|
grouped in other place (it's better than such mixing: code, data, code,
|
||||||
data, ...).
|
data, ...).
|
||||||
|
|
||||||
@ -319,19 +319,19 @@ data, ...).
|
|||||||
Filters
|
Filters
|
||||||
-------
|
-------
|
||||||
You can increase the compression ratio for some data types, using
|
You can increase the compression ratio for some data types, using
|
||||||
special filters before compressing. For example, it's possible to
|
special filters before compressing. For example, it's possible to
|
||||||
increase the compression ratio on 5-10% for code for those CPU ISAs:
|
increase the compression ratio on 5-10% for code for those CPU ISAs:
|
||||||
x86, IA-64, ARM, ARM-Thumb, PowerPC, SPARC.
|
x86, IA-64, ARM, ARM-Thumb, PowerPC, SPARC.
|
||||||
|
|
||||||
You can find C source code of such filters in C/Bra*.* files
|
You can find C source code of such filters in C/Bra*.* files
|
||||||
|
|
||||||
You can check the compression ratio gain of these filters with such
|
You can check the compression ratio gain of these filters with such
|
||||||
7-Zip commands (example for ARM code):
|
7-Zip commands (example for ARM code):
|
||||||
No filter:
|
No filter:
|
||||||
7z a a1.7z a.bin -m0=lzma
|
7z a a1.7z a.bin -m0=lzma
|
||||||
|
|
||||||
With filter for little-endian ARM code:
|
With filter for little-endian ARM code:
|
||||||
7z a a2.7z a.bin -m0=arm -m1=lzma
|
7z a a2.7z a.bin -m0=arm -m1=lzma
|
||||||
|
|
||||||
It works in such manner:
|
It works in such manner:
|
||||||
Compressing = Filter_encoding + LZMA_encoding
|
Compressing = Filter_encoding + LZMA_encoding
|
||||||
@ -339,11 +339,11 @@ Decompressing = LZMA_decoding + Filter_decoding
|
|||||||
|
|
||||||
Compressing and decompressing speed of such filters is very high,
|
Compressing and decompressing speed of such filters is very high,
|
||||||
so it will not increase decompressing time too much.
|
so it will not increase decompressing time too much.
|
||||||
Moreover, it reduces decompression time for LZMA_decoding,
|
Moreover, it reduces decompression time for LZMA_decoding,
|
||||||
since compression ratio with filtering is higher.
|
since compression ratio with filtering is higher.
|
||||||
|
|
||||||
These filters convert CALL (calling procedure) instructions
|
These filters convert CALL (calling procedure) instructions
|
||||||
from relative offsets to absolute addresses, so such data becomes more
|
from relative offsets to absolute addresses, so such data becomes more
|
||||||
compressible.
|
compressible.
|
||||||
|
|
||||||
For some ISAs (for example, for MIPS) it's impossible to get gain from such filter.
|
For some ISAs (for example, for MIPS) it's impossible to get gain from such filter.
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
///** @file
|
///** @file
|
||||||
//
|
//
|
||||||
// VFR to produce the formset used by BDS. This form only lists
|
// VFR to produce the formset used by BDS. This form only lists
|
||||||
// the Configure Required driver health instances.
|
// the Configure Required driver health instances.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2013 - 2015, Intel Corporation. All rights reserved.<BR>
|
// Copyright (c) 2013 - 2015, Intel Corporation. All rights reserved.<BR>
|
||||||
// SPDX-License-Identifier: BSD-2-Clause-Patent
|
// SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||||
|
|
||||||
@ -20,7 +20,7 @@ formset
|
|||||||
|
|
||||||
label LABEL_BEGIN;
|
label LABEL_BEGIN;
|
||||||
label LABEL_END;
|
label LABEL_END;
|
||||||
|
|
||||||
suppressif TRUE;
|
suppressif TRUE;
|
||||||
text
|
text
|
||||||
help = STRING_TOKEN(STR_NULL),
|
help = STRING_TOKEN(STR_NULL),
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
///** @file
|
///** @file
|
||||||
//
|
//
|
||||||
// VFR to produce the formset used by UI.
|
// VFR to produce the formset used by UI.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2013 - 2015, Intel Corporation. All rights reserved.<BR>
|
// Copyright (c) 2013 - 2015, Intel Corporation. All rights reserved.<BR>
|
||||||
// SPDX-License-Identifier: BSD-2-Clause-Patent
|
// SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||||
//**/
|
//**/
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/** @file
|
/** @file
|
||||||
|
|
||||||
Module to rewrite stdlib references within Oniguruma
|
Module to rewrite stdlib references within Oniguruma
|
||||||
|
|
||||||
(C) Copyright 2014-2015 Hewlett Packard Enterprise Development LP<BR>
|
(C) Copyright 2014-2015 Hewlett Packard Enterprise Development LP<BR>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/** @file
|
/** @file
|
||||||
|
|
||||||
Module to rewrite stdlib references within Oniguruma
|
Module to rewrite stdlib references within Oniguruma
|
||||||
|
|
||||||
(C) Copyright 2014-2015 Hewlett Packard Enterprise Development LP<BR>
|
(C) Copyright 2014-2015 Hewlett Packard Enterprise Development LP<BR>
|
||||||
|
@ -375,7 +375,7 @@ print_compiled_byte_code(FILE* f, regex_t* reg, int index,
|
|||||||
case OP_CCLASS_MB_NOT:
|
case OP_CCLASS_MB_NOT:
|
||||||
{
|
{
|
||||||
OnigCodePoint ncode;
|
OnigCodePoint ncode;
|
||||||
OnigCodePoint* codes;
|
OnigCodePoint* codes;
|
||||||
|
|
||||||
codes = (OnigCodePoint* )p->cclass_mb.mb;
|
codes = (OnigCodePoint* )p->cclass_mb.mb;
|
||||||
GET_CODE_POINT(ncode, codes);
|
GET_CODE_POINT(ncode, codes);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user