Branch/Call/Jump filter for 16-bit ARM Thumb (T32) machine code. Detects the two-halfword BL (Branch with Link) instruction, identified by the 0xF0xx/0xF8xx halfword pattern, and rewrites its halfword-scaled 22-bit relative offset into an absolute address so repeated calls to the same target produce identical byte sequences.
| Property | Value |
|---|---|
| Category | Compression Algorithms |
| Sub-category | Transform |
| Security status | Not classified |
| Complexity | Intermediate |
| Inventor | Igor Pavlov |
| Year | 2003 |
| Origin | 🇷🇺 Russia |
| Source | algorithms/compression/bcj-arm-thumb.js |
Status: not classified — treat as unverified.
No vulnerabilities are recorded for this implementation.
2 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 Thumb BL instructions (halfword pair F0xx/F8xx)
| Field | Value |
|---|---|
input |
00f000f801f102f9 |
expected |
00f002f801f106f9 |