示例#1
0
文件: ssa.cs 项目: Delamaine/go2cs
 // genshift generates a Prog for r = r0 op (r1 shifted by n)
 private static ref obj.Prog genshift(ref gc.SSAGenState s, obj.As @as, short r0, short r1, short r, long typ, long n)
 {
     var p = s.Prog(as);
     p.From.Type = obj.TYPE_SHIFT;
     p.From.Offset = makeshift(r1, typ, n);
     p.Reg = r0;
     if (r != 0L)
     {
         p.To.Type = obj.TYPE_REG;
         p.To.Reg = r;
     }
     return p;
 }
示例#2
0
文件: ssa.cs 项目: Delamaine/go2cs
        private static void ssaGenValue(ref gc.SSAGenState _s, ref ssa.Value _v) => func(_s, _v, (ref gc.SSAGenState s, ref ssa.Value v, Defer _, Panic panic, Recover __) =>
        {

            if (v.Op == ssa.OpCopy || v.Op == ssa.OpARM64MOVDconvert || v.Op == ssa.OpARM64MOVDreg)
            {
                if (v.Type.IsMemory())
                {
                    return;
                }
                var x = v.Args[0L].Reg();
                var y = v.Reg();
                if (x == y)
                {
                    return;
                }
                var @as = arm64.AMOVD;
                if (v.Type.IsFloat())
                {
                    switch (v.Type.Size())
                    {
                        case 4L: 
                            as = arm64.AFMOVS;