Exemple #1
0
        public string Visit(CIL_IOPrint node)
        {
            var code_result = "";

            code_result += $"\t lw $t0, {context_function[node.Obj]}\n";

            code_result += $"\t addiu $a0, $t0 , 8\n";

            code_result += $"\t li $v0, 4\n";
            code_result += $"\t syscall\n";

            return(code_result);
        }
Exemple #2
0
        public string Visit(CIL_IOPrint node)
        {
            string solve = "";
            int    idx   = variableaddr.Peek()[node.Obj];

            idx = mem.GetValue(idx);
            PrintObject(idx);
            int len = mem.GetValue(idx++);

            idx++;
            for (int i = 0; i < len - 2; i++)
            {
                int  x = mem.GetValue(idx + i);
                char c = (char)x;
                if (c == '\\')
                {
                    x = mem.GetValue(idx + ++i);
                    c = (char)x;
                    if (c == 'n')
                    {
                        solve += '\n';
                    }
                    if (c == 'b')
                    {
                        solve += '\b';
                    }
                    if (c == 't')
                    {
                        solve += '\t';
                    }
                    if (c == 'r')
                    {
                        solve += '\r';
                    }
                }
                else
                {
                    solve += c;
                }
            }
            io.print(solve);
            return("");
        }