コード例 #1
0
ファイル: emt.cs プロジェクト: stjordanis/plil
 public void BeginClass()
 {
     exe.BeginClass(io.GetClassname(), TypeAttributes.Public);
     if (io.getGenList())
     {
         io.Out(".assembly '" + io.GetClassname() + "'\r\n");
         io.Out("{\r\n");
         io.Out("\t.ver 0:0:0:0\r\n");
         io.Out("}\r\n\r\n");
         io.Out(".class " + io.GetClassname() + "{\r\n");
     }
 }
コード例 #2
0
ファイル: asm.cs プロジェクト: stjordanis/plil
        public void Load(IAsm a)
        {
            StringBuilder sb = new StringBuilder(Io.MAXSTR);
            Var           e  = a.getVar();

            if (e == null)
            {
                io.Abort("PL0402: load instruction with no variable ptr");
            }
            switch (e.getClassId())
            {
            case Tok.T_STATIC:
                sb.Append("\tldsfld ");
                sb.Append(genFieldRef(e));
                sb.Append("\t\t\t\t\t//");
                sb.Append(a.getICount());
                sb.Append(", ");
                sb.Append(e.getName());
                sb.Append("\r\n");
                break;

            case Tok.T_AUTO:
            case Tok.T_DEFCLASS:
                sb.Append("\tldloc ");
                sb.Append(e.getIndex());
                sb.Append("\t\t\t\t\t//");
                sb.Append(a.getICount());
                sb.Append(", ");
                sb.Append(e.getName());
                sb.Append("\r\n");
                break;

            case Tok.T_PARAM:
                sb.Append("\tldarg ");
                sb.Append(e.getIndex());
                sb.Append("\t\t\t\t\t//");
                sb.Append(a.getICount());
                sb.Append(", ");
                sb.Append(e.getName());
                sb.Append("\r\n");
                break;

            default:
                io.Abort("PL0403: instruction load of unknown class (" + e.getClassId() + ")");
                break;
            }
            io.Out(sb.ToString());
        }