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); }
public override object VisitExpressaoatribuicao([NotNull] CminusParser.ExpressaoatribuicaoContext context) { emExpressao = true; VisitChildren(context); emExpressao = false; return(null); }