Exemplo n.º 1
0
void multiplyRegisters() {
    int x, y, z;
    printf(" Rx=Ry*Rz: \n");
    x = inputRegister(" x=");
    y = inputRegister(" y=");
    z = inputRegister(" z=");
    /* write here your own code */
}
Exemplo n.º 2
0
void subtractRegisters() {
    int x, y, z;
    printf(" Rx=Ry-Rz: \n");
    x = inputRegister(" x=");
    y = inputRegister(" y=");
    z = inputRegister(" z=");
    /* write here your own code */
}
Exemplo n.º 3
0
void divideRegisters() {
    int x, y, z;
    printf(" Rx=Ry/Rz: \n");
    x = inputRegister(" x=");
    y = inputRegister(" y=");
    z = inputRegister(" z=");
    /* write here your own code */
}
Exemplo n.º 4
0
void addRegisters() {
    int x, y, z;
    printf(" Rx=Ry+Rz: \n");
    x = inputRegister(" x=");
    y = inputRegister(" y=");
    z = inputRegister(" z=");
    /* write here your own code */
    storeValue(x,(readValue(y) + readValue(z)));
}
Exemplo n.º 5
0
void assignment() {
    int x;
    double y;
    printf(" Rx=y: \n");
    x = inputRegister(" x=");
    y = inputValue(" y=");
    storeValue(x, y);
}
Exemplo n.º 6
0
void BranchState::updateDependency( Token::Argument& argument, State& state, Alias::Type type, const std::string& name, bool depend )
{
	Dependency* newDependency;
	if( !argument.dependency() )
	{
		Alias* newAlias = state.dependency() && depend ? state.dependency()->alias() : NULL;
		if( !newAlias )
			newAlias = m_allocator.obtainAlias( type );

		newDependency = new Dependency;
		newDependency->setAlias( newAlias );
		newDependency->setToken( *current() );
		newDependency->setState( this );			

		argument.setDependency( newDependency );
	}

	newDependency = argument.dependency();

	if( state.flags() & State::INPUT )
	{
		if( depend )
		{
			const Register* reg = inputRegister( type, name );
			assert( reg );
			newDependency->alias()->setAllocatedRegister( reg );
		}
		state.setFlags( state.flags() & ~State::INPUT );
	}

	if( !depend )
	{
		newDependency->alias()->addRange( newDependency->token().line().number(), newDependency->token().line().number() );
		state.clearTrace();
		state.setDependency( newDependency );
		return;
	}

	if( state.traces().size() > 0 )
	{
		Token* entry = &(newDependency->token());
		for( std::vector<State::Trace>::const_iterator k = state.traces().begin(); k != state.traces().end(); ++k )
		{
			if( (*k).isEntryPoint() )
				entry = &*(*k).location();
			else
				newDependency->alias()->addRange( entry->line().number(), (*(*k).location()).line().number() );
		}
		newDependency->alias()->addRange( entry->line().number(), (*current()).line().number() );

		if( state.dependency() )
			newDependency->depend( state.dependency() );

		state.clearTrace();
	}
	else
	{
		if( state.dependency() )
		{
			newDependency->depend( state.dependency() );
			newDependency->alias()->addRange( state.dependency()->token().line().number(), newDependency->token().line().number() );
		}
		else
			newDependency->alias()->addRange( newDependency->token().line().number(), newDependency->token().line().number() );
	}

	state.setDependency( newDependency );
}