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.
| 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 |
Status: not classified — treat as unverified.
No vulnerabilities are recorded for this implementation.
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 |