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 */ }
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 */ }
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 */ }
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))); }
void assignment() { int x; double y; printf(" Rx=y: \n"); x = inputRegister(" x="); y = inputValue(" y="); storeValue(x, y); }
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 ); }