コード例 #1
0
ファイル: ast.hpp プロジェクト: RaviWoods/C89_Compiler
	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();
	}
コード例 #2
0
ファイル: ast.hpp プロジェクト: RaviWoods/C89_Compiler
	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();
	}