Exemplo n.º 1
0
                    private static void zeroAuto(ref gc.Progs pp, ref gc.Node n)
                    {
                        // Note: this code must not clobber any registers.
                        var sym  = n.Sym.Linksym();
                        var size = n.Type.Size();
                        var p    = pp.Prog(arm.AMOVW);

                        p.From.Type   = obj.TYPE_CONST;
                        p.From.Offset = 0L;
                        p.To.Type     = obj.TYPE_REG;
                        p.To.Reg      = arm.REGTMP;
                        {
                            var i = int64(0L);

                            while (i < size)
                            {
                                p           = pp.Prog(arm.AMOVW);
                                p.From.Type = obj.TYPE_REG;
                                p.From.Reg  = arm.REGTMP;
                                p.To.Type   = obj.TYPE_MEM;
                                p.To.Name   = obj.NAME_AUTO;
                                p.To.Reg    = arm.REGSP;
                                p.To.Offset = n.Xoffset + i;
                                p.To.Sym    = sym;
                                i          += 4L;
                            }
                        }
                    }
Exemplo n.º 2
0
                    private static void zeroAuto(ref gc.Progs pp, ref gc.Node n)
                    {
                        // Note: this code must not clobber any registers.
                        var op = x86.AMOVQ;

                        if (gc.Widthptr == 4L)
                        {
                            op = x86.AMOVL;
                        }
                        var sym  = n.Sym.Linksym();
                        var size = n.Type.Size();
                        {
                            var i = int64(0L);

                            while (i < size)
                            {
                                var p = pp.Prog(op);
                                p.From.Type   = obj.TYPE_CONST;
                                p.From.Offset = 0L;
                                p.To.Type     = obj.TYPE_MEM;
                                p.To.Name     = obj.NAME_AUTO;
                                p.To.Reg      = x86.REG_SP;
                                p.To.Offset   = n.Xoffset + i;
                                p.To.Sym      = sym;
                                i            += int64(gc.Widthptr);
                            }
                        }
                    }