public override List <string> Generate()
        {
            var lines = new List <string>();

            lines.Add(WMIPS.li("$a0", R));
            lines.Add(WMIPS.sw("$a0", (-L * 4).ToString(), "$sp"));
            return(lines);
        }
Exemplo n.º 2
0
        public override List <string> Generate()
        {
            var lines = new List <string>();

            lines.Add(WMIPS.NEWLINE);
            lines.Add(LFull + ":");
            lines.Add(WMIPS.li("$t9", 0));
            return(lines);
        }
Exemplo n.º 3
0
        public override List <string> Generate()
        {
            var lines = new List <string>();

            lines.Add(WMIPS.li("$v0", 9));
            lines.Add(WMIPS.li("$a0", 4 * Size));
            lines.Add(WMIPS.SYSCALL);
            lines.Add(WMIPS.sw("$v0", (-4 * Var).ToString(), "$sp"));
            return(lines);
        }
Exemplo n.º 4
0
 public override List <string> Generate()
 {
     return(new List <string>()
     {
         read_op,
         WMIPS.li("$a1", 1),
         WMIPS.sub("$a0", "$a1", "$a0"),
         save_res
     });
 }
Exemplo n.º 5
0
        public override List <string> Generate()
        {
            var lines = new List <string>()
            {
                read_op1, read_op2
            };

            switch (_operator)
            {
            case "+":
                lines.Add(WMIPS.add("$a0", "$a0", "$a1"));
                break;

            case "-":
                lines.Add(WMIPS.sub("$a0", "$a0", "$a1"));
                break;

            case "*":
                lines.Add(WMIPS.mult("$a0", "$a1"));
                lines.Add(WMIPS.mflo("$a0"));
                break;

            case "/":
                lines.Add(WMIPS.div("$a0", "$a1"));
                lines.Add(WMIPS.mflo("$a0"));
                break;

            case "<":
                lines.Add(WMIPS.sge("$a0", "$a0", "$a1"));
                lines.Add(WMIPS.li("$a1", 1));
                lines.Add(WMIPS.sub("$a0", "$a1", "$a0"));
                break;

            case "<=":
                lines.Add(WMIPS.sle("$a0", "$a0", "$a1"));
                break;

            case "=":
                lines.Add(WMIPS.seq("$a0", "$a0", "$a1"));
                break;

            case "=:=":
                break;

            case "inherit":
                lines.Add(WMIPS.move("$v1", "$ra"));
                lines.Add(WMIPS.jal("_inherit"));
                lines.Add(WMIPS.move("$ra", "$v1"));
                lines.Add(WMIPS.move("$a0", "$v0"));
                break;
            }
            lines.Add(save_res);
            return(lines);
        }