authorgravatar for miguel.p.paradinha@gmail.commparadinha <miguel.p.paradinha@gmail.com> 2022-01-30 02:39:37+00:00
committergravatar for miguel.p.paradinha@gmail.commparadinha <miguel.p.paradinha@gmail.com> 2022-02-02 08:50:37+00:00
logcc16ac9314752681300c7e72a4989aeba2ba2579
tree5fe6d3fb0b7b13e04d9487791c25a2acec83516d
parent5cf918143c7c5857142ac12c3587928ed74b2052

implement storing to MCValue.memory


1 files changed, 13 insertions(+), 2 deletions(-)

src/arch/x86_64/CodeGen.zig+13-2
...@@ -1762,8 +1762,19 @@ fn store(self: *Self, ptr: MCValue, value: MCValue, ptr_ty: Type, value_ty: Type...@@ -1762,8 +1762,19 @@ fn store(self: *Self, ptr: MCValue, value: MCValue, ptr_ty: Type, value_ty: Type
1762 },1762 },
1763 }1763 }
1764 },1764 },
1765 .memory => {1765 .memory => |addr| {
1766 return self.fail("TODO implement storing to MCValue.memory", .{});1766 const reg = try self.copyToTmpRegister(ptr_ty, .{ .memory = addr });
1767 // mov reg, [reg]
1768 _ = try self.addInst(.{
1769 .tag = .mov,
1770 .ops = (Mir.Ops{
1771 .reg1 = reg.to64(),
1772 .reg2 = reg.to64(),
1773 .flags = 0b10,
1774 }).encode(),
1775 .data = .{ .imm = 0 },
1776 });
1777 return self.store(.{ .register = reg }, value, ptr_ty, value_ty);
1767 },1778 },
1768 .stack_offset => {1779 .stack_offset => {
1769 return self.fail("TODO implement storing to MCValue.stack_offset", .{});1780 return self.fail("TODO implement storing to MCValue.stack_offset", .{});