view LightClone/Source/Program.cpp @ 54:95677f648a2c VirtualMachine Mk2

Refactored VirtualMachine
author koryspansel
date Fri, 30 Sep 2011 18:37:54 -0700
parents 8cefb65577cc
children
line wrap: on
line source

/*
 * Program
 */

#include "Program.h"
#include "Compiler.h"

/*
 * Program
 */
Program::Program()
{
}

/*
 * Initialize
 */
ErrorCode Program::Initialize()
{
	return Clear(), Error_Success;
}

/*
 * Terminate
 */
void Program::Terminate()
{
}

/*
 * SetAction
 */
void Program::SetAction(uint32 nFunction, uint32 nIndex, uint32 nAction)
{
	if(nFunction < MaximumFunctionCount && nIndex < MaximumInstructionCount)
	{
		kFunction[nFunction].nInstruction[nIndex] = nAction;
	}
}

/*
 * GetAction
 */
uint32 Program::GetAction(uint32 nFunction, uint32 nIndex) const
{
	return (nFunction < MaximumFunctionCount && nIndex < MaximumInstructionCount) ? kFunction[nFunction].nInstruction[nIndex] : 0;
}

/*
 * Clear
 */
void Program::Clear()
{
	for(uint32 i = 0; i < MaximumFunctionCount; ++i)
	{
		for(uint32 j = 0; j < MaximumInstructionCount; ++j)
		{
			kFunction[i].nInstruction[j] = Action_None;
		}
	}
}

/*
 * Upload
 */
ErrorCode Program::Upload(VirtualMachine& kMachine) const
{
	kMachine.Reset();
	kMachine.Clear();

	Compiler kCompiler;
	return kCompiler.Compile(*this, kMachine.GetMemoryPointer(), kMachine.GetMemorySize());

}