1
0
mirror of https://github.com/upx/upx synced 2025-09-28 19:06:07 +08:00

save 28 bytes (> 10%) in arch/arm/v4a/nrv2b_d8.S

This commit is contained in:
John Reiser 2006-07-24 14:48:06 -07:00
parent 77f9b336bd
commit e5bda7add7
3 changed files with 1555 additions and 1567 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
/* arm-linux.elf-fold.h -- created from arm-linux.elf-fold.bin, 2084 (0x824) bytes
/* arm-linux.elf-fold.h -- created from arm-linux.elf-fold.bin, 2108 (0x83c) bytes
This file is part of the UPX executable compressor.
@ -27,17 +27,17 @@
*/
#define LINUX_ELF32ARM_FOLD_SIZE 2084
#define LINUX_ELF32ARM_FOLD_ADLER32 0x6ecb5394
#define LINUX_ELF32ARM_FOLD_CRC32 0x1f581fa7
#define LINUX_ELF32ARM_FOLD_SIZE 2108
#define LINUX_ELF32ARM_FOLD_ADLER32 0x3e40608e
#define LINUX_ELF32ARM_FOLD_CRC32 0xb5be5c29
unsigned char linux_elf32arm_fold[2084] = {
unsigned char linux_elf32arm_fold[2108] = {
127, 69, 76, 70, 1, 1, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
2, 0, 40, 0, 1, 0, 0, 0,128,128, 0, 0, 52, 0, 0, 0, /* 0x 10 */
0, 0, 0, 0, 2, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0, 0, /* 0x 20 */
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, /* 0x 30 */
0,128, 0, 0, 36, 8, 0, 0, 36, 8, 0, 0, 5, 0, 0, 0, /* 0x 40 */
0,128, 0, 0, 1, 0, 0, 0, 36, 8, 0, 0, 0, 0, 0, 0, /* 0x 50 */
0,128, 0, 0, 60, 8, 0, 0, 60, 8, 0, 0, 5, 0, 0, 0, /* 0x 40 */
0,128, 0, 0, 1, 0, 0, 0, 60, 8, 0, 0, 0, 0, 0, 0, /* 0x 50 */
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 60 */
0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */
12, 48,157,229, 3, 49,141,224, 20, 48,131,226, 4, 0,147,228, /* 0x 80 */
@ -45,7 +45,7 @@ unsigned char linux_elf32arm_fold[2084] = {
0, 0, 80,227,252,255,255, 26, 8, 32,141,229, 10,220, 77,226, /* 0x a0 */
9, 64,160,225, 4,144,154,229, 13,128,160,225, 0,112,154,229, /* 0x b0 */
36, 96,143,226, 12,144,137,226, 0,176,160,227,248, 15, 45,233, /* 0x c0 */
15, 0,189,232,124, 1, 0,235, 0,224,160,225, 20,208,141,226, /* 0x d0 */
15, 0,189,232,132, 1, 0,235, 0,224,160,225, 20,208,141,226, /* 0x d0 */
10,220,141,226, 7, 0,189,232, 4,240, 18,229,255, 48, 3,226, /* 0x e0 */
80, 0, 83,227, 14,240,160, 17, 33, 17,176,225, 0, 0, 80, 19, /* 0x f0 */
14,240,160, 1, 1, 16, 65,226, 1, 33,144,231, 15, 52, 2,226, /* 0x 100 */
@ -57,110 +57,111 @@ unsigned char linux_elf32arm_fold[2084] = {
14,240,160,225, 91, 0,144,239, 14,240,160,225,125, 0,144,239, /* 0x 160 */
14,240,160,225, 4, 80, 45,229, 8, 80,157,229, 4, 64, 45,229, /* 0x 170 */
8, 64,157,229, 37, 86,160,225,192, 0,144,239, 4, 64,157,228, /* 0x 180 */
4, 80,157,228, 14,240,160,225, 4,224, 45,229, 0, 48,144,229, /* 0x 190 */
2, 0, 83,225, 2,192,160,225, 4,224,144,229,127, 0,160, 51, /* 0x 1a0 */
224,255,255, 59, 1, 32, 66,226, 1, 0,114,227, 4, 0, 0, 10, /* 0x 1b0 */
1, 48,222,228, 1, 32, 66,226, 1, 48,193,228, 1, 0,114,227, /* 0x 1c0 */
249,255,255,234, 4, 32,144,229, 0, 48,144,229, 12, 32,130,224, /* 0x 1d0 */
3, 48,108,224, 0, 48,128,229, 4, 32,128,229, 4,240,157,228, /* 0x 1e0 */
240, 64, 45,233, 1, 64,160,225, 0, 16,145,229, 20,208, 77,226, /* 0x 1f0 */
0, 0, 81,227, 0, 80,160,225, 2,112,160,225, 3, 96,160,225, /* 0x 200 */
71, 0, 0, 10, 12, 32,160,227, 5, 0,160,225, 8, 16,141,226, /* 0x 210 */
220,255,255,235, 8,192,157,229, 0, 0, 92,227, 12, 32,157,229, /* 0x 220 */
6, 0, 0, 26, 0, 49,159,229, 3, 0, 82,225, 5, 0, 0, 26, /* 0x 230 */
0, 48,149,229, 0, 0, 83,227, 57, 0, 0, 10, 1, 0, 0,234, /* 0x 240 */
0, 0, 82,227, 1, 0, 0, 26,127, 0,160,227,181,255,255,235, /* 0x 250 */
12, 0, 82,225,251,255,255,138, 0, 48,148,229, 3, 0, 92,225, /* 0x 260 */
248,255,255,138, 12, 0, 82,225, 4, 48,148,229, 34, 0, 0, 42, /* 0x 270 */
4,192,141,229, 16,192,157,229, 4, 0,149,229, 2, 16,160,225, /* 0x 280 */
0,192,141,229, 3, 32,160,225, 4, 48,141,226, 15,224,160,225, /* 0x 290 */
7,240,160,225, 0, 0, 80,227,234,255,255, 26, 10, 0,157,233, /* 0x 2a0 */
3, 0, 81,225,231,255,255, 26, 17, 32,221,229, 0, 0, 82,227, /* 0x 2b0 */
0, 0, 86, 19, 9, 0, 0, 10, 2, 12, 81,227, 2, 0, 0,138, /* 0x 2c0 */
0, 48,148,229, 1, 0, 83,225, 4, 0, 0, 26, 2, 48,160,225, /* 0x 2d0 */
4, 0,148,229, 18, 32,221,229, 15,224,160,225, 6,240,160,225, /* 0x 2e0 */
4, 48,149,229, 12, 16,157,229, 0, 32,149,229, 1, 48,131,224, /* 0x 2f0 */
2, 32, 97,224, 12, 0,133,232, 2, 0, 0,234, 3, 16,160,225, /* 0x 300 */
5, 0,160,225,159,255,255,235, 8, 16,157,229, 12, 0,148,232, /* 0x 310 */
2, 32, 97,224, 1, 48,131,224, 0, 0, 82,227, 12, 0,132,232, /* 0x 320 */
182,255,255,234, 20,208,141,226,240,128,189,232, 85, 80, 88, 33, /* 0x 330 */
0, 0, 80,227, 14,240,160, 1, 0, 48,144,229, 1, 0, 83,225, /* 0x 340 */
6, 0, 0, 10, 1, 0, 83,227, 0, 48,160, 19, 1, 48,160, 3, /* 0x 350 */
0, 0, 81,227, 0, 48,160, 3, 0, 0, 83,227, 1, 0, 0, 10, /* 0x 360 */
6, 0,128,232, 14,240,160,225, 8, 0,128,226,241,255,255,234, /* 0x 370 */
240, 79, 45,233, 40,208, 77,226, 1,144,160,225, 28,192,145,229, /* 0x 380 */
2,176,160,225,176, 17,209,225, 80, 32,157,229,188,226,217,225, /* 0x 390 */
2, 0, 81,227, 12,112,137,224, 24, 0,141,229, 20, 48,141,229, /* 0x 3a0 */
16, 32,141,229, 50,128,160, 3, 34,128,160, 19, 7, 16,160,225, /* 0x 3b0 */
1,224, 94,226, 0, 96,224,227, 0, 80,160,227, 12, 0, 0, 74, /* 0x 3c0 */
0, 48,145,229, 1, 0, 83,227, 6, 0, 0, 26, 8, 32,145,229, /* 0x 3d0 */
20, 48,145,229, 2, 48,131,224, 3, 0, 85,225, 3, 80,160, 49, /* 0x 3e0 */
2, 0, 86,225, 2, 96,160, 33, 1,224, 94,226, 32, 16,129,226, /* 0x 3f0 */
241,255,255,234,255,110,198,227, 15, 96,198,227, 5, 48,102,224, /* 0x 400 */
255, 62,131,226, 15, 48,131,226,255, 94,195,227, 0, 64,160,227, /* 0x 410 */
15, 80,197,227, 8, 48,160,225, 6, 0,160,225, 0,192,224,227, /* 0x 420 */
5, 16,160,225, 4, 32,160,225, 0,192,141,229, 4, 64,141,229, /* 0x 430 */
75,255,255,235,188, 50,217,225, 3, 0, 84,225, 5, 48,128,224, /* 0x 440 */
12, 64,141,229, 36, 48,141,229, 0, 96,102,224,133, 0, 0,170, /* 0x 450 */
0, 48,151,229, 6, 0, 83,227, 5, 0, 0, 26, 8, 32,151,229, /* 0x 460 */
20, 0,157,229, 6, 32,130,224, 3, 16,160,227,175,255,255,235, /* 0x 470 */
117, 0, 0,234, 1, 0, 83,227,115, 0, 0, 26, 24, 48,151,229, /* 0x 480 */
8, 16,151,229, 7, 48, 3,226, 32, 34,159,229, 6, 16,129,224, /* 0x 490 */
3, 49,160,225, 16, 0,151,229, 50, 35,160,225, 1, 74,160,225, /* 0x 4a0 */
20, 48,151,229, 0, 0, 91,227, 4,192,151,229, 36, 74,160,225, /* 0x 4b0 */
3, 48,129,224, 1, 80,100,224, 24,224,157, 5, 7,128, 2,226, /* 0x 4c0 */
4,160,128,224, 2, 32,160, 19, 0, 32,160, 3, 8, 48,141,229, /* 0x 4d0 */
0,224,224, 19, 28, 0,141,229, 32, 16,141,229, 18, 48,160, 3, /* 0x 4e0 */
50, 48,160, 19, 12,192,100,224, 8, 32,130,225, 5, 0,160,225, /* 0x 4f0 */
10, 16,160,225, 0,224,141,229, 4,192,141,229, 24,255,255,235, /* 0x 500 */
0, 0, 85,225, 62, 0, 0, 26, 0, 0, 91,227, 6, 0, 0, 10, /* 0x 510 */
16, 32,157,229, 4, 48, 24,226, 2, 48,160, 17, 28, 16,141,226, /* 0x 520 */
11, 0,160,225, 24, 32,157,229, 44,255,255,235, 0, 48,106,226, /* 0x 530 */
3, 74,160,225, 2, 0, 24,227, 36, 74,160,225, 7, 0, 0, 10, /* 0x 540 */
0, 0, 84,227, 10, 16,133,224, 4, 32,160,225, 3, 0, 0, 10, /* 0x 550 */
4, 80,157,228, 14,240,160,225, 0, 0, 80,227, 14,240,160, 1, /* 0x 190 */
0, 48,144,229, 1, 0, 83,225, 6, 0, 0, 10, 1, 0, 83,227, /* 0x 1a0 */
0, 48,160, 19, 1, 48,160, 3, 0, 0, 81,227, 0, 48,160, 3, /* 0x 1b0 */
0, 0, 83,227, 1, 0, 0, 10, 6, 0,128,232, 14,240,160,225, /* 0x 1c0 */
8, 0,128,226,241,255,255,234, 0, 48,144,229, 2, 0, 83,225, /* 0x 1d0 */
4, 48,144,229, 4,224, 45,229, 3,192,160, 33, 2,224,160,225, /* 0x 1e0 */
2, 32,160, 33, 3, 0, 0, 42,127, 0,160,227,205,255,255,235, /* 0x 1f0 */
1, 48, 92,229, 1, 48, 65,229, 1, 32, 66,226, 1, 0,114,227, /* 0x 200 */
1,192,140,226, 1, 16,129,226,248,255,255, 26, 4, 32,144,229, /* 0x 210 */
0, 48,144,229, 14, 32,130,224, 3, 48,110,224, 0, 48,128,229, /* 0x 220 */
4, 32,128,229, 4,240,157,228,240, 64, 45,233, 0, 80,160,225, /* 0x 230 */
20,208, 77,226, 1, 64,160,225, 2,112,160,225, 3, 96,160,225, /* 0x 240 */
68, 0, 0,234, 4, 16,141,226, 5, 0,160,225, 12, 32,160,227, /* 0x 250 */
220,255,255,235, 4,192,157,229, 0, 0, 92,227, 8, 16,157,229, /* 0x 260 */
6, 0, 0, 26, 0, 49,159,229, 3, 0, 81,225, 5, 0, 0, 26, /* 0x 270 */
0, 48,149,229, 0, 0, 83,227, 2, 0, 0, 26, 56, 0, 0,234, /* 0x 280 */
0, 0, 81,227, 1, 0, 0, 26,127, 0,160,227,165,255,255,235, /* 0x 290 */
12, 0, 81,225,251,255,255,138, 0, 48,148,229, 3, 0, 92,225, /* 0x 2a0 */
248,255,255,138, 12, 0, 81,225, 33, 0, 0, 42, 16,192,141,229, /* 0x 2b0 */
12,192,157,229, 4, 0,149,229, 4, 32,148,229, 16, 48,141,226, /* 0x 2c0 */
0,192,141,229, 15,224,160,225, 7,240,160,225, 0, 0, 80,227, /* 0x 2d0 */
236,255,255, 26, 16, 16,157,229, 4, 48,157,229, 3, 0, 81,225, /* 0x 2e0 */
232,255,255, 26, 13, 32,221,229, 0, 0, 82,227, 0, 0, 86, 19, /* 0x 2f0 */
9, 0, 0, 10, 2, 12, 81,227, 2, 0, 0,138, 0, 48,148,229, /* 0x 300 */
1, 0, 83,225, 4, 0, 0, 26, 2, 48,160,225, 4, 0,148,229, /* 0x 310 */
14, 32,221,229, 15,224,160,225, 6,240,160,225, 8, 48,157,229, /* 0x 320 */
6, 0,149,232, 3, 32,130,224, 1, 16, 99,224, 6, 0,133,232, /* 0x 330 */
3, 0, 0,234, 1, 32,160,225, 5, 0,160,225, 4, 16,148,229, /* 0x 340 */
160,255,255,235, 4, 48,157,229, 6, 0,148,232, 3, 32,130,224, /* 0x 350 */
1, 16, 99,224, 6, 0,132,232, 0, 48,148,229, 0, 0, 83,227, /* 0x 360 */
183,255,255, 26, 20,208,141,226,240,128,189,232, 85, 80, 88, 33, /* 0x 370 */
240, 79, 45,233, 1,160,160,225,176,193,218,225, 28, 16,145,229, /* 0x 380 */
188,226,218,225, 48,208, 77,226, 2, 0, 92,227, 1, 96,138,224, /* 0x 390 */
16, 0,141,229, 16,192,160, 3, 0,192,160, 19, 1,224, 78,226, /* 0x 3a0 */
6, 16,160,225, 0, 64,224,227, 0, 0,160,227, 12, 32,141,229, /* 0x 3b0 */
8, 48,141,229, 11, 0, 0,234, 0, 48,145,229, 1, 0, 83,227, /* 0x 3c0 */
6, 0, 0, 26, 8, 32,145,229, 20, 48,145,229, 3, 48,130,224, /* 0x 3d0 */
3, 0, 80,225, 3, 0,160, 49, 2, 0, 84,225, 2, 64,160, 33, /* 0x 3e0 */
32, 16,129,226, 1,224, 78,226, 0, 0, 94,227,241,255,255,170, /* 0x 3f0 */
255, 78,196,227, 15, 64,196,227, 0, 48,100,224,255, 62,131,226, /* 0x 400 */
15, 48,131,226,255, 62,195,227, 15, 48,195,227, 36, 48,141,229, /* 0x 410 */
0, 80,160,227, 34, 48,140,226, 4, 0,160,225, 0,192,224,227, /* 0x 420 */
36, 16,157,229, 5, 32,160,225, 0,192,141,229, 4, 80,141,229, /* 0x 430 */
75,255,255,235, 52, 48,160,227, 0,176,100,224,155, 3, 3,224, /* 0x 440 */
28, 0,141,229, 32, 48,141,229, 24, 80,141,229,127, 0, 0,234, /* 0x 450 */
0, 48,150,229, 6, 0, 83,227, 5, 0, 0, 26, 8, 32,150,229, /* 0x 460 */
8, 0,157,229, 2, 32,139,224, 3, 16,160,227, 69,255,255,235, /* 0x 470 */
114, 0, 0,234, 1, 0, 83,227,112, 0, 0, 26, 24, 48,150,229, /* 0x 480 */
72, 34,159,229, 7, 48, 3,226, 3, 49,160,225, 50, 35,160,225, /* 0x 490 */
8, 48,150,229, 12, 16,157,229, 3,144,139,224, 9, 10,160,225, /* 0x 4a0 */
16, 48,150,229, 0, 0, 81,227, 32, 10,160,225, 4,192,150,229, /* 0x 4b0 */
7, 80, 2,226, 20, 32,150,229, 0,128,131,224, 16,224,157, 5, /* 0x 4c0 */
9,112, 96,224, 40, 48,141,229, 20, 32,141,229, 0,224,224, 19, /* 0x 4d0 */
12,192, 96,224, 5, 32,160, 1, 18, 48,160, 3, 2, 32,133, 19, /* 0x 4e0 */
50, 48,160, 19, 7, 0,160,225, 8, 16,160,225, 44,144,141,229, /* 0x 4f0 */
0,224,141,229, 4,192,141,229, 25,255,255,235, 0, 0, 87,225, /* 0x 500 */
59, 0, 0, 26, 12, 48,157,229, 0, 0, 83,227, 6, 0, 0, 10, /* 0x 510 */
88, 16,157,229, 4, 48, 21,226, 1, 48,160, 17, 12, 0,157,229, /* 0x 520 */
40, 16,141,226, 16, 32,157,229, 62,255,255,235, 0, 48,104,226, /* 0x 530 */
3, 74,160,225, 2, 0, 21,227, 36, 74,160,225, 7, 0, 0, 10, /* 0x 540 */
0, 0, 84,227, 5, 0, 0, 10, 8, 16,135,224, 4, 32,160,225, /* 0x 550 */
0, 48,160,227, 1, 32, 82,226, 1, 48,193,228,251,255,255, 26, /* 0x 560 */
0, 0, 91,227, 40, 0, 0, 10, 0, 48,151,229, 1, 0, 83,227, /* 0x 570 */
29, 0, 0, 26, 24, 48,151,229, 1, 0, 19,227, 26, 0, 0, 10, /* 0x 580 */
16, 32,135,226, 12, 0,146,232, 8, 16,151,229, 2, 0, 83,225, /* 0x 590 */
1, 48,131,224, 6, 32,131,224, 4, 0, 0, 26, 0, 48, 98,226, /* 0x 5a0 */
3, 58,160,225, 35, 58,160,225, 7, 0, 83,227, 6, 0, 0,138, /* 0x 5b0 */
4, 32,151,229,134, 48,134,224, 3, 49,134,224, 3, 49,129,224, /* 0x 5c0 */
0, 0, 82,227, 8, 32,131,226, 3, 0, 0, 26,224, 48,159,229, /* 0x 5d0 */
0, 48,130,229,220, 48,159,229, 4, 48,130,229, 0, 0, 82,227, /* 0x 5e0 */
20, 0,157, 21, 0, 16,160, 19, 80,255,255, 27, 5, 0,160,225, /* 0x 5f0 */
10, 16,160,225, 8, 32,160,225,215,254,255,235, 0, 0, 80,227, /* 0x 600 */
1, 0, 0, 10,127, 0,160,227,198,254,255,235, 4, 48,138,224, /* 0x 610 */
3, 80,133,224, 8, 48,157,229, 3, 0, 85,225, 10, 0, 0, 42, /* 0x 620 */
0,192,224,227, 3, 16,101,224, 0,192,141,229, 8, 32,160,225, /* 0x 630 */
1,192,140,226, 5, 0,160,225, 50, 48,160,227, 4,192,141,229, /* 0x 640 */
199,254,255,235, 0, 0, 85,225,237,255,255, 26, 12, 32,157,229, /* 0x 650 */
188, 50,217,225, 1, 32,130,226, 3, 0, 82,225, 32,112,135,226, /* 0x 660 */
12, 32,141,229,120,255,255,234, 0, 0, 91,227, 4, 0, 0, 26, /* 0x 670 */
24, 0,157,229,178,254,255,235, 0, 0, 80,227, 4, 0, 0, 10, /* 0x 680 */
223,255,255,234,176, 49,217,225, 3, 0, 83,227, 36, 0,157, 21, /* 0x 690 */
173,254,255, 27, 76, 48,157,229, 0, 0, 83,227, 0, 96,131, 21, /* 0x 6a0 */
24, 0,153,229, 6, 0,128,224, 40,208,141,226,240,143,189,232, /* 0x 6b0 */
64, 98, 81,115, 91, 0,144,239, 14,240,160,225,240, 71, 45,233, /* 0x 6c0 */
12,208, 77,226, 44,192,141,226, 52,112,141,226, 0, 80,160,225, /* 0x 6d0 */
1, 96,160,225, 3,160,160,225, 12, 16,160,225, 0, 48,160,227, /* 0x 6e0 */
7, 0,160,225, 4,144,156,229, 2,128,160,225, 52, 64,157,229, /* 0x 6f0 */
186,254,255,235, 56, 48,157,229, 5, 0,160,225, 3, 48,100,224, /* 0x 700 */
5, 16,160,227,188, 34,217,225, 56, 48,141,229, 52, 96,141,229, /* 0x 710 */
6,255,255,235, 52, 96,137,226, 5, 0,160,225, 4, 16,160,227, /* 0x 720 */
186, 34,217,225, 1,255,255,235, 8, 48,150,229, 60, 32,157,229, /* 0x 730 */
3, 32,130,224, 52, 32,130,226, 5, 0,160,225, 3, 16,160,227, /* 0x 740 */
250,254,255,235, 8,192,141,226, 7, 32,160,225, 9, 16,160,225, /* 0x 750 */
5, 48,160,225, 8, 0,160,225, 0,192,141,229, 4,160,141,229, /* 0x 760 */
2,255,255,235, 0, 64,160,225, 9, 16,160,227, 4, 32,160,225, /* 0x 770 */
5, 0,160,225,237,254,255,235,188, 18,217,225, 0, 32,160,227, /* 0x 780 */
1, 0, 82,225, 31, 0, 0,170, 0, 48,150,229, 3, 0, 83,227, /* 0x 790 */
1, 32,130,226, 24, 0, 0, 26, 8, 48,150,229, 8, 0,157,229, /* 0x 7a0 */
0, 16,160,227, 0, 0,131,224, 1, 32,160,225, 98,254,255,235, /* 0x 7b0 */
0, 64, 80,226, 4, 0, 0,186, 9, 16,160,225, 2, 44,160,227, /* 0x 7c0 */
89,254,255,235, 2, 12, 80,227, 1, 0, 0, 10,127, 0,160,227, /* 0x 7d0 */
84,254,255,235, 0,192,160,227, 4, 0,160,225, 12, 32,160,225, /* 0x 7e0 */
9, 16,160,225, 12, 48,160,225, 0,192,141,229, 4,192,141,229, /* 0x 7f0 */
222,254,255,235, 0, 64,160,225, 2, 0, 0,234, 1, 0, 82,225, /* 0x 800 */
32, 96,134,226,222,255,255,234, 4, 0,160,225, 12,208,141,226, /* 0x 810 */
240,135,189,232 /* 0x 820 */
12, 32,157,229, 0, 0, 82,227, 35, 0, 0, 10, 0, 48,150,229, /* 0x 570 */
1, 0, 83,227, 24, 0, 0, 26, 24, 48,150,229, 1, 0, 19,227, /* 0x 580 */
21, 0, 0, 10, 20, 32,150,229, 16, 48,150,229, 3, 0, 82,225, /* 0x 590 */
8, 16,150,229, 70, 0, 0, 26, 1, 48,130,224, 11, 32,131,224, /* 0x 5a0 */
0, 48, 98,226, 3, 58,160,225, 35, 58,160,225, 7, 0, 83,227, /* 0x 5b0 */
63, 0, 0,154, 24, 49,159,229, 0, 48,130,229, 20, 49,159,229, /* 0x 5c0 */
4, 48,130,229, 1, 0, 0,234, 0, 0, 82,227, 2, 0, 0, 10, /* 0x 5d0 */
8, 0,157,229, 0, 16,160,227,234,254,255,235, 7, 0,160,225, /* 0x 5e0 */
8, 16,160,225, 5, 32,160,225,219,254,255,235, 0, 0, 80,227, /* 0x 5f0 */
1, 0, 0, 10,127, 0,160,227,202,254,255,235, 20, 32,157,229, /* 0x 600 */
4, 48,136,224, 2, 16,137,224, 3, 64,135,224, 1, 0, 84,225, /* 0x 610 */
10, 0, 0, 42, 0,192,224,227, 0,192,141,229, 1, 16,100,224, /* 0x 620 */
1,192,140,226, 5, 32,160,225, 4, 0,160,225, 50, 48,160,227, /* 0x 630 */
4,192,141,229,202,254,255,235, 0, 0, 84,225,236,255,255, 26, /* 0x 640 */
24, 48,157,229, 1, 48,131,226, 24, 48,141,229, 32, 96,134,226, /* 0x 650 */
188, 50,218,225, 24, 16,157,229, 3, 0, 81,225,123,255,255,186, /* 0x 660 */
12, 32,157,229, 0, 0, 82,227, 4, 0, 0, 26, 16, 0,157,229, /* 0x 670 */
179,254,255,235, 0, 0, 80,227,221,255,255, 26, 5, 0, 0,234, /* 0x 680 */
176, 49,218,225, 3, 0, 83,227, 28, 48,157, 21, 36, 16,157, 21, /* 0x 690 */
1, 0,131, 16,172,254,255, 27, 84, 32,157,229, 0, 0, 82,227, /* 0x 6a0 */
0,176,130, 21, 24, 0,154,229, 0, 0,139,224, 48,208,141,226, /* 0x 6b0 */
240,143,189,232, 4, 48,150,229, 32, 32,157,229, 0, 0, 83,227, /* 0x 6c0 */
2, 48,129,224, 8, 32,131,226,185,255,255, 10,189,255,255,234, /* 0x 6d0 */
64, 98, 81,115, 91, 0,144,239, 14,240,160,225,240, 71, 45,233, /* 0x 6e0 */
12,208, 77,226, 52,112,141,226, 0, 80,160,225, 1, 96,160,225, /* 0x 6f0 */
3,160,160,225, 7, 0,160,225, 0, 48,160,227, 44, 16,141,226, /* 0x 700 */
48,144,157,229, 2,128,160,225, 52, 64,157,229,197,254,255,235, /* 0x 710 */
56, 48,157,229, 5, 16,160,227, 3, 48,100,224,188, 34,217,225, /* 0x 720 */
5, 0,160,225, 56, 48,141,229, 52, 96,141,229,149,254,255,235, /* 0x 730 */
5, 0,160,225, 4, 16,160,227,186, 34,217,225,145,254,255,235, /* 0x 740 */
52, 96,137,226, 60, 32,157,229, 8, 48,150,229, 52, 32,130,226, /* 0x 750 */
3, 32,130,224, 5, 0,160,225, 3, 16,160,227,137,254,255,235, /* 0x 760 */
8,192,141,226, 7, 32,160,225, 9, 16,160,225, 5, 48,160,225, /* 0x 770 */
8, 0,160,225, 0,192,141,229, 4,160,141,229,251,254,255,235, /* 0x 780 */
0, 64,160,225, 9, 16,160,227, 4, 32,160,225, 5, 0,160,225, /* 0x 790 */
124,254,255,235,188, 18,217,225, 0, 32,160,227, 29, 0, 0,234, /* 0x 7a0 */
0, 48,150,229, 3, 0, 83,227, 24, 0, 0, 26, 8, 48,150,229, /* 0x 7b0 */
8, 0,157,229, 0, 16,160,227, 0, 0,131,224, 1, 32,160,225, /* 0x 7c0 */
93,254,255,235, 0, 64, 80,226, 4, 0, 0,186, 9, 16,160,225, /* 0x 7d0 */
2, 44,160,227, 84,254,255,235, 2, 12, 80,227, 1, 0, 0, 10, /* 0x 7e0 */
127, 0,160,227, 79,254,255,235, 0,192,160,227, 4, 0,160,225, /* 0x 7f0 */
12, 32,160,225, 9, 16,160,225, 12, 48,160,225, 0,192,141,229, /* 0x 800 */
4,192,141,229,217,254,255,235, 0, 64,160,225, 3, 0, 0,234, /* 0x 810 */
32, 96,134,226, 1, 32,130,226, 1, 0, 82,225,223,255,255,186, /* 0x 820 */
4, 0,160,225, 12,208,141,226,240,135,189,232 /* 0x 830 */
};

View File

@ -49,7 +49,7 @@
#define STRB3(reg,pdst,incr) strb reg,pdst,incr
#undef GETBIT
#define GETBIT ADD2S(bits,bits); bleq get8_n2b
#define GETBIT bl get1_n2b
#define getnextb(reg) GETBIT; ADC2S(reg,reg) /* Set Condition Codes on result */
#define jnextb0 GETBIT; bcc
@ -85,23 +85,30 @@ eof_n2b:
POP {r4,r5, pc} // return
get1_n2b:
ADD2S(bits,bits) // shift left 1 bit, set condition codes
movne pc,lr // conditionally return CarryOut if rest is non-empty
get8_n2b: // In: Carry set [from adding 0x80000000 (1<<31) to itself]
LDRB3(bits,[src],#1) // zero-extend next byte
adc bits,bits,bits // double and insert CarryIn as low bit
ADC2(bits,bits) // double and insert CarryIn as low bit
movs bits,bits,lsl #24 // move to top byte, and set CarryOut from old bit 8
mov pc,lr
ss11_n2b: // return len= [2..)
mov len,#1 // the msb
mov ip,lr // outer ret.addr
1:
getnextb(len)
jnextb0 1b
mov pc,ip // outer ret
lit_n2b:
LDRB3(tmp,[src],#1)
STRB3(tmp,[dst],#1)
top_n2b:
jnextb1 lit_n2b
mov len,#1 // the msb
getoff_n2b: // ss11 len= [2..)
getnextb(len)
jnextb0 getoff_n2b
bl ss11_n2b // len= [2..)
subs tmp,len,#3 // set Carry
mov len,#0 // Carry unaffected
blo offprev_n2b // ss11 returned 2
@ -109,27 +116,17 @@ getoff_n2b: // ss11 len= [2..)
orr off,off,tmp,lsl #8
mvns off,off; beq eof_n2b // off= ~off
offprev_n2b: // In: 0==len
getnextb(len); getnextb(len); bne plus1_n2b // two bits; 1,2,3 ==> 2,3,4
mov len,#1 // the msb
getlen_n2b: // ss11 len= [2..)
getnextb(len)
jnextb0 getlen_n2b
getnextb(len); getnextb(len); bne 1f // two bits; 1,2,3 ==> 2,3,4
bl ss11_n2b // len= [2..)
ADD2(len,#2) // [2..) ==> [4..);
plus1_n2b:
ADD2(len,#1) // 1,2,3 ==> 2,3,4; [4..) ==> [5..)
1:
/* 'cmn': add the inputs, set condition codes, discard the sum */
cmn off,#0xd<<8 // within M2_MAX_OFFSET
addcc len,len,#1 // too far away, so minimum match length is 3
add tmp,dst,len
ldrb tmp,[tmp,#-1] // force cacheline allocate
copy_n2b:
ldrb tmp,[dst,off]
STRB3(tmp,[dst],#1)
SUB2S(len,#1); bne copy_n2b
b top_n2b
copy_n2b: // copy 1+len bytes
ldrb tmp,[dst,off]; SUB2S(len,#1)
STRB3(tmp,[dst],#1); bhs copy_n2b
b top_n2b // exit with -1==len
.size ucl_nrv2b_decompress_8, .-ucl_nrv2b_decompress_8
/*