Ejemplo n.º 1
0
bool CThumbInstruction::Load(char *Name, char *Params)
{
	bool paramfail = false;
	NoCheckError = false;

	for (int z = 0; ThumbOpcodes[z].name != NULL; z++)
	{
		if (strcmp(Name,ThumbOpcodes[z].name) == 0)
		{
			if (LoadEncoding(ThumbOpcodes[z],Params) == true)
			{
				Loaded = true;
				return true;
			}
			paramfail = true;
		}
	}

	if (NoCheckError == false)
	{
		if (paramfail == true)
		{
			Logger::printError(Logger::Error,L"THUMB parameter failure \"%S\"",Params);
		} else {
			Logger::printError(Logger::Error,L"Invalid THUMB opcode \"%S\"",Name);
		}
	}
	return false;
}
Ejemplo n.º 2
0
bool CMipsInstruction::Load(char* Name, char* Params)
{
	bool paramfail = false;
	NoCheckError = false;

	for (int z = 0; MipsOpcodes[z].name != NULL; z++)
	{
		if (MipsOpcodes[z].ver & Mips.GetVersion())
		{
			if (parseOpcode(MipsOpcodes[z],Name) == true)
			{
				if (LoadEncoding(MipsOpcodes[z],Params) == true)
				{
					Loaded = true;
					return true;
				}
				paramfail = true;
			}
		}
	}

	if (NoCheckError == false)
	{
		if (paramfail == true)
		{
			Logger::printError(Logger::Error,L"MIPS parameter failure \"%S\"",Params);
		} else {
			Logger::printError(Logger::Error,L"Invalid MIPS opcode \"%S\"",Name);
		}
	}
	return false;
}
Ejemplo n.º 3
0
bool CMipsInstruction::Load(char* Name, char* Params, int RamPos)
{
	bool paramfail = false;
	NoCheckError = false;
	this->RamPos = RamPos;

	for (int z = 0; MipsOpcodes[z].name != NULL; z++)
	{
		if (strcmp(Name,MipsOpcodes[z].name) == 0)
		{
			if (LoadEncoding(MipsOpcodes[z],Params) == true)
			{
				Loaded = true;
				return true;
			}
			paramfail = true;
		}
	}

	if (NoCheckError == false)
	{
		if (paramfail == true)
		{
			SetAssembleError("Parameter failure \"%s\"",Params);
		} else {
			SetAssembleError("Invalid opcode \"%s\"",Name);
		}
	}
	return false;
}
Ejemplo n.º 4
0
bool CArmInstruction::Load(char *Name, char *Params)
{
	bool paramfail = false;
	NoCheckError = false;

	for (int z = 0; ArmOpcodes[z].name != NULL; z++)
	{
		if ((ArmOpcodes[z].flags & ARM_ARM9) && !Arm.isArm9())
			continue;

		if (ParseOpcode((char*)ArmOpcodes[z].name,Name) == true)
		{
			if (LoadEncoding(ArmOpcodes[z],Params) == true)
			{
				Loaded = true;
				return true;
			}
			paramfail = true;
		}
	}

	if (NoCheckError == false)
	{
		if (paramfail == true)
		{
			Logger::printError(Logger::Error,L"ARM parameter failure \"%S\"",Params);
		} else {
			Logger::printError(Logger::Error,L"Invalid ARM opcode \"%S\"",Name);
		}
	}
	return false;
}
Ejemplo n.º 5
0
bool CMipsInstruction::Load(const char* Name, const char* Params, int RamPos)
{
	bool paramfail = false;
	NoCheckError = false;
	this->RamPos = RamPos;

	const MipsArchDefinition& arch = mipsArchs[MARCH_PS2];
	for (int z = 0; MipsOpcodes[z].name != NULL; z++)
	{
		if ((MipsOpcodes[z].archs & arch.supportSets) == 0)
			continue;
		if ((MipsOpcodes[z].archs & arch.excludeMask) != 0)
			continue;

		if ((MipsOpcodes[z].flags & MO_64BIT) && !(arch.flags & MO_64BIT))
			continue;
		if ((MipsOpcodes[z].flags & MO_FPU) && !(arch.flags & MO_FPU))
			continue;

		if (parseOpcode(MipsOpcodes[z],Name) == true)
		{
			if (LoadEncoding(MipsOpcodes[z],Params) == true)
			{
				Loaded = true;
				return true;
			}
			paramfail = true;
		}
	}

	if (NoCheckError == false)
	{
		if (paramfail == true)
		{
			error = "Parameter failure.";
		} else {
			error = "Invalid opcode.";
		}
	}
	return false;
}
Ejemplo n.º 6
0
bool CMipsInstruction::Load(const char* Name, const char* Params)
{
	bool paramfail = false;
	NoCheckError = false;

	const MipsArchDefinition& arch = mipsArchs[Mips.GetVersion()];
	for (int z = 0; MipsOpcodes[z].name != NULL; z++)
	{
		if ((MipsOpcodes[z].archs & arch.supportSets) == 0)
			continue;
		if ((MipsOpcodes[z].archs & arch.excludeMask) != 0)
			continue;

		if ((MipsOpcodes[z].flags & MO_64BIT) && !(arch.flags & MO_64BIT))
			continue;
		if ((MipsOpcodes[z].flags & MO_FPU) && !(arch.flags & MO_FPU))
			continue;

		if (parseOpcode(MipsOpcodes[z],Name) == true)
		{
			if (LoadEncoding(MipsOpcodes[z],Params) == true)
			{
				Loaded = true;
				return true;
			}
			paramfail = true;
		}
	}

	if (NoCheckError == false)
	{
		if (paramfail == true)
		{
			Logger::printError(Logger::Error,L"MIPS parameter failure \"%S\"",Params);
		} else {
			Logger::printError(Logger::Error,L"Invalid MIPS %S opcode \"%S\"",arch.name,Name);
		}
	}
	return false;
}