BCJ (algoritm)

Inom datakomprimering hänvisar BCJ , förkortning för Branch/Call/Jump , till en teknik som förbättrar komprimeringen av maskinkod genom att ersätta relativa grenadresser med absoluta ettor. Detta gör att en Lempel-Ziv- kompressor kan identifiera dubbletter av mål och koda dem mer effektivt. Vid dekompression återställer det omvända filtret den ursprungliga kodningen. Olika BCJ-filter används för olika instruktionsuppsättningar , eftersom var och en använder olika opkoder för förgrening.

En form av BCJ ses i Microsofts kabinettfilformat från 1996, som filtrerar x86 CALL-instruktioner för LZX -kompressorn. Filformaten 7z och xz implementerar BCJ för flera arkitekturer. ZPAQ kallar sin x86 BCJ som "E8E9", efter opcode-värdena.

bsdiff , ett verktyg för deltauppdateringar , kringgår behovet av att skriva arkitekturspecifika BCJ-verktyg genom att koda bytevisa skillnader. Detta gör att det kan vara mycket bättre än verktygen av typen "matcha och kopiera" som VCDIFF. Googles zucchini, som lägger till ett lager av explicit demontering, kan dock producera ännu mindre diffar.