I tried to compile this example and received the following error:
```
Error: Cannot assign value 'os.stdin.stream' of type 'File_Stream' to 'Stream' in a structure literal
input = os.stdin.stream,
^~~~~~~~~~~~~~^
```
The example was fixed by passing the File_Stream to `os.to_stream`.
Signed-off-by: Robert Stefanic <rstefanic72@gmail.com>
Add mem_rip_label(label_id) so a RIP-relative memory operand can
reference a label: the encoder writes a placeholder disp32 and emits a
REL32 relocation (addend 0) at the field's byte offset, mirroring the
existing .RELATIVE jump/call path. This expresses lea reg, [rip + <label>]
(position-independent data addressing).
Add op_imm_label(label_id) for movabs reg, <label>: the imm stays kind
.IMMEDIATE (form matching unchanged) but is flagged so the encoder emits
an ABS64 relocation for the imm64 instead of a literal; imm_matches_inline
forces the full IMM64 form so a small id can't collapse to mov r64, imm32.
Both labeled forms bypass the contextless recipe fast-path (which cannot
append relocations) and fall back to the interpreter. Flags reuse spare
bits in Memory (disp_is_label) and Operand_Flags (imm_is_label) -- no
struct growth. Section 11 tests cover resolved/unresolved disp, the ABS64
movabs, and an end-to-end executed lea+load.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
bit_set without a backing type counts bits from the enum's lowest value (141299eb02)
in this case it causes an off-by-one offset, so flags fall down to the one below. I experienced `LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR` -> `LOAD_LIBRARY_REQUIRE_SIGNED_TARGET`, for instance, so unsigned DLLs wouldn't load. aw.
fix is adding a dword backing type to the bit flags, like the other types in this file
Somewhere on the creation of these tables, the `0x3000-0x3000` range seemingly slipped in an additional time.
Since binary search is done on both `unicode_spaces` and `space_ranges`, i doubt this is intentional behavior, as this unsorts the tables.