void Cldi::execInstr()
{
//cout << "should exec " << this->toString() << endl;
- this->m_cpu->setRegister(this->m_rd, this->m_imm);
+ CDat val = this->m_cpu->getRegister(this->m_rd);
+ if(this->m_s == false) {
+ if(this->m_hl == false) {
+ val &= 0xFFFF0000;
+ }
+ else {
+ val &= 0x0000FFFF;
+ }
+ this->m_cpu->setRegister(this->m_rd, val + this->m_imm);
+ }
+ else {
+ this->m_cpu->setRegister(this->m_rd, this->m_imm);
+ }
}
std::string Cldi::toString()