Skip to content

Commit

Permalink
styling changes
Browse files Browse the repository at this point in the history
  • Loading branch information
yangsu committed Dec 17, 2011
1 parent df5e9f1 commit 65b32b2
Showing 1 changed file with 28 additions and 19 deletions.
47 changes: 28 additions & 19 deletions RegisterAllocation/mipsgen.sml
Expand Up @@ -77,29 +77,35 @@ struct

(* JUMP *)
| munchStm(T.CJUMP(oper, T.CONST i, e1, lab1, lab2)) =
emit(A.OPER{assem=((operToJump (oper)) ^ " `s0," ^ int i ^ "," ^ Symbol.name(lab1) ^ "\n" ^ "j " ^ (Symbol.name lab2) ^ "\n"),
src=[munchExp e1], dst=[], jump=SOME([lab1,lab2])})
emit(A.OPER{assem=((operToJump (oper)) ^ " `s0," ^ int i ^ "," ^
Symbol.name(lab1) ^ "\n" ^ "j " ^ (Symbol.name lab2) ^ "\n"),
src=[munchExp e1], dst=[], jump=SOME([lab1,lab2])})

| munchStm(T.CJUMP(oper, e1, T.CONST i, lab1, lab2)) =
emit(A.OPER{assem=((operToJump oper) ^ " `s0," ^ int i ^ "," ^ Symbol.name(lab1) ^ "\n" ^ "j " ^ (Symbol.name lab2) ^ "\n"),
emit(A.OPER{assem=((operToJump oper) ^ " `s0," ^ int i ^ "," ^
Symbol.name(lab1) ^ "\n" ^ "j " ^ (Symbol.name lab2) ^ "\n"),
src=[munchExp e1], dst=[], jump=SOME([lab1,lab2])})

| munchStm(T.CJUMP(oper, e1, e2, lab1, lab2)) =
emit(A.OPER{assem=((operToJump oper) ^ " `s0,`s1," ^ Symbol.name(lab1) ^ "\n" ^ "j " ^ (Symbol.name lab2) ^ "\n"),
src=[munchExp e1, munchExp e2], dst=[], jump=SOME([lab1,lab2])})
emit(A.OPER{assem=((operToJump oper) ^ " `s0,`s1," ^ Symbol.name(lab1) ^
"\n" ^ "j " ^ (Symbol.name lab2) ^ "\n"),
src=[munchExp e1, munchExp e2], dst=[], jump=SOME([lab1,lab2])})

| munchStm(T.JUMP(T.NAME(lab), llst)) =
emit(A.OPER{assem = "j " ^ (Symbol.name lab) ^ "\n",
src=[], dst=[], jump=SOME[Temp.namedlabel(Symbol.name lab)]})
emit(A.OPER{assem = "j " ^ (Symbol.name lab) ^ "\n",
src=[], dst=[], jump=SOME[Temp.namedlabel(Symbol.name lab)]})

| munchStm(T.EXP(T.CALL(T.NAME(lab),args))) =
emit(A.OPER{assem="jal " ^ Symbol.name(lab) ^ "\n",
src=munchArgs(0,args), dst=F.RA::F.callersaves, jump=NONE})

| munchStm (T.EXP exp) = (munchExp exp; ())
| munchStm (T.JUMP a) = emit(A.OPER{assem="JUMP : bad munch stm! line 107", src=[], dst=[], jump=NONE})
| munchStm (T.MOVE a) = emit(A.MOVE{assem="MOVE : bad munch stm! line 107", src=Temp.newtemp (), dst=Temp.newtemp ()})
(*| munchStm(_) = emit(A.OPER{assem="bad munch stm! line 107", src=[], dst=[], jump=NONE})*)
| munchStm (T.JUMP a) =
emit(A.OPER{assem="JUMP : bad munch stm! line 107",
src=[], dst=[], jump=NONE})
| munchStm (T.MOVE a) =
emit(A.MOVE{assem="MOVE : bad munch stm! line 107",
src=Temp.newtemp (), dst=Temp.newtemp ()})

and munchArgs(i,[]) = []
| munchArgs(i,eh::et) =
Expand Down Expand Up @@ -214,18 +220,21 @@ struct
| munchExp (T.ESEQ (s, e)) = (munchStm s; munchExp e)

| munchExp (T.NAME label) =
result (fn r =>
emit (A.OPER {assem="la `d0, " ^ (Symbol.name label) ^ "\n",
dst=[r], src=[], jump=NONE}))
result (fn r => emit (A.OPER
{assem="la `d0, " ^ (Symbol.name label) ^ "\n",
dst=[r], src=[], jump=NONE}))

| munchExp (T.CONST n) =
result (fn r =>
emit (A.OPER {assem="li `d0, " ^ (int n) ^ "\n",
dst=[r], src=[], jump=NONE}))
result (fn r => emit (A.OPER
{assem="li `d0, " ^ (int n) ^ "\n",
dst=[r], src=[], jump=NONE}))

| munchExp(T.CALL (_,_)) =
((Printtree.printtree(TextIO.stdOut, stm); TextIO.flushOut TextIO.stdOut;());
result(fn _ => emit(A.OPER{assem="--bad call\n", src=[], dst=[], jump=NONE})))
| munchExp(T.BINOP(_, _, _)) = result(fn _ => emit(A.OPER{assem="--bad binop\n", src=[], dst=[], jump=NONE}))
((Printtree.printtree(TextIO.stdOut, stm); TextIO.flushOut TextIO.stdOut;());
result(fn _ => emit(A.OPER{assem="--bad call\n", src=[], dst=[], jump=NONE})))

| munchExp(T.BINOP(_, _, _)) =
result(fn _ => emit(A.OPER{assem="--bad binop\n", src=[], dst=[], jump=NONE}))
(*print IR tree*)
(*val _ = (Printtree.printtree(TextIO.stdOut, stm); TextIO.flushOut TextIO.stdOut;())*)
in
Expand Down

0 comments on commit 65b32b2

Please sign in to comment.