Commit 3d3153c58e

Jakub Konka <kubkon@jakubkonka.com>
2023-11-12 15:34:16
x86_64: use .rax for local exec as prescribed by the spec
1 parent c6833e6
Changed files (1)
src
arch
x86_64
src/arch/x86_64/Lower.zig
@@ -389,14 +389,14 @@ fn emit(lower: *Lower, prefix: Prefix, mnemonic: Mnemonic, ops: []const Operand)
                             // Since we are linking statically, we emit LE model directly.
                             lower.result_insts[lower.result_insts_len] =
                                 try Instruction.new(.none, .mov, &[_]Operand{
-                                .{ .reg = ops[0].reg.to64() },
+                                .{ .reg = .rax },
                                 .{ .mem = Memory.sib(.qword, .{ .base = .{ .reg = .fs } }) },
                             });
                             lower.result_insts_len += 1;
                             _ = lower.reloc(.{ .linker_reloc = sym });
                             emit_mnemonic = .lea;
                             break :op .{ .mem = Memory.sib(mem_op.sib.ptr_size, .{
-                                .base = .{ .reg = ops[0].reg.to64() },
+                                .base = .{ .reg = .rax },
                                 .disp = std.math.minInt(i32),
                             }) };
                         }