std::string codeprint(Context& cont) { std::stringstream ss; ss << "#while\n"; int x = cont.labelNum; cont.labelNum++; ss << "label" << x << "a:\n"; ss << e->codeprint(cont); ss << "beq $8, $0, " << "label" << x << "c\n"; ss << "label" << x << "b:\n"; ss << s->codeprint(cont); ss << "j label" << x << "a\n"; ss << "label" << x << "c:\n"; return ss.str(); }
std::string codeprint(Context& cont) { std::stringstream ss; ss << ".text\n" << ".align 2\n"; ss << ".globl " << name << "\n"; ss << ".ent " << name << "\n"; ss << ".type " << name << ", @function" << "\n"; ss << name << ":\n"; ss << p->codeprint(cont); /* cont.variableMaps[0][param1->getId()] = 1; cont.variableMaps[0][param2->getId()] = 2; for(int i = 4; i <= 7; i++) { ss << "sw $" << i << ", 0($sp)" << "\n"; ss << "addiu $sp, $sp, -4\n"; cont.currentStackOffset++; } */ ss << cs->codeprint(cont); return ss.str(); }