예제 #1
0
파일: codegen.cpp 프로젝트: selius/ncc
void CAddressGenerationVisitor::Visit(CVariable &AStmt)
{
	if (AStmt.GetSymbol()->GetGlobal()) {
		Asm.Add(PUSH, "$" + AStmt.GetName());
	} else {
		Asm.Add(LEA, mem(AStmt.GetSymbol()->GetOffset(), EBP), EAX);
		Asm.Add(PUSH, EAX);
	}
}
예제 #2
0
파일: codegen.cpp 프로젝트: selius/ncc
void CCodeGenerationVisitor::Visit(CVariable &AStmt)
{
	if (AStmt.GetSymbol()->GetType()->IsArray()) {
		AStmt.Accept(Addr);
	} else {
		if (AStmt.GetSymbol()->GetGlobal()) {
			Asm.Add(PUSH, AStmt.GetSymbol()->GetName());
		} else {
			Asm.Add(PUSH, mem(AStmt.GetSymbol()->GetOffset(), EBP));
		}
	}
}