Пример #1
0
        static void compile(string src)
        {
            var output = Path.ChangeExtension(src, ".exe");
            if (File.Exists(output)) return;

            Console.WriteLine();
            var s = DateTime.Now;

            Console.WriteLine("パースしています...");
            var root = new Root();
            readDir(root, "lib-Core");
            //readDir(root, "lib-System");
            parse(root, src);

            Console.WriteLine("コンパイルしています...");
            var module = new Girl.PE.Module();
            module.Specific.SubSystem = Girl.PE.IMAGE_SUBSYSTEM.WINDOWS_CUI;
            var codes = OpModule.Create(module);
            root.AddCodes(codes);
            module.Text.OpCodes = codes.ToArray();

            Console.WriteLine("リンクしています...");
            module.Link(output);
            Console.WriteLine("出力しました: {0}", output);

            var e = DateTime.Now;
            Console.WriteLine("所要時間: {0}", e - s);
        }
Пример #2
0
 static void readDir(Root root, string dir)
 {
     var dirs = new List<string>(Directory.GetDirectories(dir));
     dirs.Sort(Compare);
     for (int i = 0; i < dirs.Count; i++)
         readDir(root, dirs[i]);
     var files = new List<string>(Directory.GetFiles(dir));
     files.Sort(Compare);
     for (int i = 0; i < files.Count; i++)
     {
         var file = files[i];
         if (Path.GetExtension(file).ToLower() == ".adm")
             parse(root, file);
     }
 }
Пример #3
0
 static void parse(Root root, string src)
 {
     var src2 = src.Replace("\\", "/");
     //Console.WriteLine("パースしています: {0}", src2);
     using (var sr = new StreamReader(src))
         root.ReadText(src2, sr.ReadToEnd());
 }