Пример #1
0
        public override object VisitExpressaoatribuicao([NotNull] CminusParser.ExpressaoatribuicaoContext context)
        {
            //Console.WriteLine("VisitExpressaoatribuicao");
            var expressao = Visit(context.expressao());
            var variavel  = Visit(context.var());

            if (((string)expressao).IndexOf("r") != -1)
            {
                registradores.FreeMemRegister(((string)expressao));
                registradores.FreeDataRegister(((string)expressao));
            }

            //assembly.AppendLine(variavel + " = " + expressao);
            if (((string)expressao).IndexOf("r") == -1)
            {
                assembly.AppendLine("mov " + variavel + ", " + expressao);
            }
            else
            {
                assembly.AppendLine("copy " + variavel + ", " + expressao);
            }

            registradores.FreeMemRegister(((string)variavel));
            registradores.FreeDataRegister(((string)variavel));
            registradores.FreeMemRegister(((string)expressao));
            registradores.FreeDataRegister(((string)expressao));

            return(null);
        }
Пример #2
0
        public override object VisitExpressaoatribuicao([NotNull] CminusParser.ExpressaoatribuicaoContext context)
        {
            emExpressao = true;

            VisitChildren(context);

            emExpressao = false;

            return(null);
        }