Pointer Interpretation
This PR introduces the ability to customize the interpretation of pointers beyond strict byte offsets.
- The
pointer()
constructor can receive an optional 3rd and 4th arguments: A scale and an interpreter function respectively. - A pointer has new
.scale
and.interpretFunc
members in Javascript. - If scale is set to an integer N, the pointer is interpreted as a multiple of N bytes, rather than the default 1.
- If interpreterFunc is set to a function, the function is invoked to interpret the pointer, and must return an absolute byte offset. The scaling factor is not applied automatically, but is available inside the interpreter function as
this.scale
.
Custom pointer interpretations such as pointer(uint64(), uint8(), 512)
are particularly useful when dealing with filesystems, which sometimes specify offsets in units of 512- or 4096-byte sectors, and stuff the pointers with other bits.
Edited by Olexa Bilaniuk