Files
Odin/core
Flāvius 0f472409c4 rexcode/x86: label addressing for RIP-relative disp and movabs imm
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>
2026-07-30 15:05:16 -04:00
..
2026-03-13 11:54:15 +01:00
2026-04-28 19:27:24 +02:00
2026-04-01 18:58:16 +02:00
2026-07-10 21:37:47 +02:00
2026-07-12 06:17:08 +09:00
2026-04-28 19:27:24 +02:00
2026-06-23 12:35:58 +01:00
2026-04-22 11:17:17 +01:00
2026-07-07 23:28:26 +02:00
2026-04-28 19:27:24 +02:00
2026-03-14 16:21:38 +00:00
2026-05-20 17:55:29 -07:00
2026-06-12 21:48:41 +02:00
2026-02-09 20:08:22 +01:00
2026-07-06 20:09:55 +02:00
2026-04-28 19:27:24 +02:00