protected internal override void VisitAST(AssignStmtAST node) { if (!HasId(node.Name)) { RegisterId(node.Name, node.Value.RetType); } var(ty, addr) = GetId(node.Name); this.Visit(node.Value); GenCode.Add(Ins.Dpl(ty)); // duplicate the stack top first GenCode.Add(Ins.Str(ty, 0, addr)); // then move to the specified addr, sp-- }