X-Git-Url: http://git.joshuawise.com/snipe.git/blobdiff_plain/f716a180ca5458e19643c902d4fb97785b9fd88e..a644da892dbd55a7be1aed029dafebe28d26d27e:/top/top.sml?ds=sidebyside diff --git a/top/top.sml b/top/top.sml index 5263317..c03263f 100644 --- a/top/top.sml +++ b/top/top.sml @@ -34,7 +34,7 @@ struct FeckfulnessAnalysis.optimizer, ConstantFold.optimizer, LabelCoalescing.optimizer, - Peephole.optimizer*)] + Peephole.optimizer*)] : Optimizer.optimization list val uniqopts = foldr @@ -104,10 +104,10 @@ struct val _ = Flag.guard Flags.verbose say ("Processing function: " ^ name) - val _ = Flag.guard Flags.verbose say " Generating proto-x86_64 code..." + val _ = Flag.guard Flags.verbose say " Generating proto-blargCPU code..." val assem = Codegen.codegen ir val _ = Flag.guard Flags.assem - (fn () => List.app (TextIO.print o (x86.print)) assem) () + (fn () => List.app (TextIO.print o (Blarg.print)) assem) () val _ = Flag.guard Flags.verbose say " Optimizing pre-liveness..." val assem = Optimizer.optimize_preliveness (!enabledopts) assem @@ -119,7 +119,7 @@ struct (fn (asm, liv) => TextIO.print ( let - val xpp = x86.print asm + val xpp = Blarg.print asm val xpp = String.extract (xpp, 0, SOME (size xpp - 1)) val spaces = implode (List.tabulate (40 - size xpp, fn _ => #" ")) handle size => "" val lpp = Liveness.prettyprint liv @@ -142,22 +142,22 @@ struct (fn () => List.app (TextIO.print o (fn (t, i) => (Temp.name t) ^ " => " ^ ( - if (i <= x86.regtonum x86.R13D) - then (x86.pp_oper (x86.REG (x86.numtoreg i), Temp.Long)) + if (i <= 10) + then (Blarg.pp_oper (Blarg.REG (Blarg.numtoreg i))) else - "spill[" ^ Int.toString (i - x86.regtonum x86.R13D) ^ "]") + "spill[" ^ Int.toString (i - 11) ^ "]") ^ "--"^ Int.toString i ^ "\n")) colors) () - val _ = Flag.guard Flags.verbose say " Solidifying x86_64 code..." + val _ = Flag.guard Flags.verbose say " Solidifying blargCPU code..." val x86 = Solidify.solidify colors assem val _ = Flag.guard Flags.verbose say " Optimizing final assembly..." val x86p = Optimizer.optimize_final (!enabledopts) x86 val _ = Flag.guard Flags.verbose say " Stringifying..." - val x86d = [x86.DIRECTIVE(".globl " ^ name), - x86.DIRECTIVE(name ^ ":")] + val x86d = [Blarg.DIRECTIVE(".globl " ^ name), + Blarg.DIRECTIVE(name ^ ":")] @ x86p val code = Stringify.stringify realname x86d in @@ -213,10 +213,22 @@ struct val _ = Flag.guard Flags.verbose say "Optimizing whole-program IR..." val ir = Optimizer.optimize_ir (!enabledopts) ir val _ = Flag.guard Flags.ir (fn () => say (TreeUtils.Print.pp_program ir)) () - - val output = foldr (fn (func, code) => (processir ("calloc" (* lololololol *) :: (Symbol.elems externs)) func) ^ code) - (".file\t\"" ^ source ^ "\"\n.ident\t\"15-411 ASS compiler by czl@ and jwise@\"\n" ^ - ".ident \"Optimizations enabled: " ^ String.concat (map (fn x => (#shortname x) ^ " ") (!enabledopts)) ^ "\"\n") ir + + val code = map (fn func => processir ("calloc" (* lololololol *) :: (Symbol.elems externs)) func) ir + val strings = map (fn (sn, s) => String.concat ( + [Stringref.name sn, ": .word "] @ + (map (fn c => (Int.toString (ord c)) ^ ", ") (String.explode s)) @ + ["0\n"] + ) ) (Stringref.all ()) + + val output = + String.concat ( + ".file\t\"" :: source :: "\"\n" :: + ".ident\t\"15-411 ASS compiler by czl@ and jwise@\"\n" :: + ".ident \"Optimizations enabled: " :: (map (fn x => (#shortname x) ^ " ") (!enabledopts)) @ [ "\"\n" ] @ + code @ + [ ".section .rodata\n" ] @ + strings ) val afname = stem source ^ ".s" val _ = Flag.guard Flags.verbose say ("Writing assembly to " ^ afname ^ " ...")