public override void PrintASM(string levelTabulatiion, bool isNewLine = false) { IdentificatorAST identificatorRight = (IdentificatorAST)SymTable.symTabls.FindNode((id as IdentificatorAST).GetName()); int startInStack = identificatorRight.GetAddresInStack(); ASM.WriteASMCode(levelTabulatiion + ASMregisters.GetCrement(crement) + "\t" + ASMregisters.GetNameType(identificatorRight.GetTypeId()) + " [ebp-" + startInStack + "], 1"); }
private string IdentificatorPrint(string levelTabulatiion, IdentificatorAST sideNodeIdentificatorAST) { string reigster = ""; IdentificatorAST identificatorSide = (IdentificatorAST)SymTable.symTabls.FindNode(sideNodeIdentificatorAST.GetName()); if (sideNodeIdentificatorAST.IsArray) { sideNodeIdentificatorAST.PrintArrayIterationASM(levelTabulatiion, isPushResult: true); } else { reigster = ASMregisters.GetFreeRegister(ASMregisters.Register.DATA); int offsetInStack = sideNodeIdentificatorAST.GetOffseIfTtArray(); int startInStack = identificatorSide.GetAddresInStack() + offsetInStack; ASM.WriteASMCode(levelTabulatiion + "mov\t" + reigster + ", " + ASMregisters.GetNameType(identificatorSide.GetTypeId()) + " [ebp-" + startInStack + "]"); } return(reigster); }