Commit Graph

7 Commits

Author SHA1 Message Date
Kamila Szewczyk
9c3ead9386 decompressor: gzip/tinf -> limlz
removes external dependency on tinf by replacing the compression algorithm with a simpler, faster, smaller and more auditable fixed-width LZ77 encoding purpose-tailored to x86 code mixed with data.

before: decompressor.bin 2,492 bytes (tinf dependency) with .text 0x875 and .rodata 0x13c bytes each.
after: decompressor.bin consists only of .text, 0xe6-byte decompressor; 90.8% reduction in decompressor volume.

the dependency on gzip during compile-time is replaced by host/limlzpack.c, a Lempel-Ziv encoder in 275 SLoC that uses a suffix array matchfinder (prefix-doubling in mathcal O(n log^2 n) and Storer-Szymanski backwards parse. the fixed-width formats packets as [F][LLLL][MMM], favouring a literal-skewed distribution with F switching between one-byte and two-byte offsets (favouring recent statistics).

integrity checking is done via crc32 with the polynomial 0xEDB88320, reflected.

the effective loss in compression ratio by using a tremendously simpler and less packed with edge cases algorithm causes a compression ratio hit well below 1KB, factoring in the stub sizes.

also adds new machinery for host cc detection per review.
2026-04-19 00:29:09 +02:00
mintsuki
400202d926 misc: stage23 -> common 2022-02-03 10:38:43 +01:00
mintsuki
3bb70dcbee build: Move to using autoconf 2022-01-16 06:09:36 +01:00
mintsuki
eaef49b78b build: Allow out of tree builds 2021-11-20 08:32:06 +01:00
mintsuki
5e023bce3d stage1: Misc improvements 2021-09-21 14:39:43 +02:00
mintsuki
a8626d6fdd misc: Initial Makefile rework 2021-03-08 00:50:23 +01:00
mintsuki
27848fc85c misc: General code reorganisation 2021-02-25 01:24:54 +01:00