Hawkynt

BCJ ARM64

Branch/Call/Jump filter for AArch64 (ARM64) machine code. Detects BL instructions (top 6 bits equal to 100101) and ADRP instructions (bits 31,28-24 equal to 1001x) and rewrites their word- or page-relative immediates into an absolute form so repeated calls and page references produce identical byte sequences.

Properties

Property Value
Category Compression Algorithms
Sub-category Transform
Security status Not classified
Complexity Advanced
Inventor Lasse Collin (Tukaani Project)
Year 2022
Origin 🌐 International
Source algorithms/compression/bcj-arm64.js

Security

Status: not classified — treat as unverified.

No vulnerabilities are recorded for this implementation.

Documentation

References

Test vectors

3 vectors ship with this algorithm and run in the test suite. Byte values are hexadecimal.

Vector 1 — Empty buffer

Field Value
input (empty)
expected (empty)

Vector 2 — Two consecutive BL instructions (top 6 bits 100101, little-endian words)

Field Value
input 0000009401000095
expected 0000009402000095

Vector 3 — ADRP instructions within one 4 KiB page (guard leaves them unchanged)

Field Value
input 0000009001000091
expected 0000009001000091

← All algorithms