Example #1
0
        public string Visit(CIL_ExpUn node)
        {
            string solve = "";

            int val;

            if (int.TryParse(node.Expr, out val))
            {
                solve += $"\t li $t0, {val}\n";
            }
            if (node.Op == "~")
            {
                solve += $"\t neg $t1, $t0\n";
            }
            else if (node.Op.ToLower() == "not")
            {
                solve += $"\t not $t1, $t0\n";
            }
            else
            {
                throw new Exception($"{node.Op} Not Found Operator");
            }
            solve += $"\t sw $t1 {context_function[node.Result]}\n";
            return(solve);
        }
Example #2
0
        public string Visit(CIL_ExpUn node)
        {
            int value = GetValueFromId(node.Expr);

            if (node.Op == "~")
            {
                value = ~value;
            }
            if (node.Op == "not")
            {
                value = (value != 0) ? 0 : 1;
            }
            int dir = variableaddr.Peek()[node.Result];

            mem.SetValue(dir, value);
            return("");
        }