diff --git a/src/spider/runtime/instr/Instr_000-01F.cpp b/src/spider/runtime/instr/Instr_000-01F.cpp index b58e1ad..425ed25 100644 --- a/src/spider/runtime/instr/Instr_000-01F.cpp +++ b/src/spider/runtime/instr/Instr_000-01F.cpp @@ -297,14 +297,52 @@ namespace spider { void CPU::DMOD() { // TODO: Implement DMOD + fetchOperSrc(); + fetchOperDst(); + switch(_size){ + case 0b00: //byte + _dst->_i8 = _dst->_i8 / _src->_i8, _dst->_i8 % _src->_i8; + case 0b01: //short + _dst->_i16 = _dst->_i16 / _src->_i16, _dst->_i16 % _src->_i16; + case 0b10: //int + _dst->_i32 = _dst->_i32 / _src->_i32, _dst->_i32 % _src->_i32; + case 0b11: //long + _dst->_i64 = _dst->_i64 / _src->_i64, _dst->_i64 % _src->_i64; + } + (this->*_post)(); } void CPU::UDMD() { // TODO: Implement UDMD + fetchOperSrc(); + fetchOperDst(); + switch(_size){ + case 0b00: //byte + _dst->_u8 = _dst->_u8 / _src->_u8, _dst->_u8 % _src->_u8; + case 0b01: //short + _dst->_u16 = _dst->_u16 / _src->_u16, _dst->_u16 % _src->_u16; + case 0b10: //int + _dst->_u32 = _dst->_u32 / _src->_u32, _dst->_u32 % _src->_u32; + case 0b11: //long + _dst->_u64 = _dst->_u64 / _src->_u64, _dst->_u64 % _src->_u64; + } + (this->*_post)(); } void CPU::FBT() { // TODO: Implement FBT + fetchOperDst(); + switch(_size){ + case 0b00: //byte + _dst->_u8 = 1; + case 0b01: //short + _dst->_u16 = 1; + case 0b10: //int + _dst->_u32 = 1; + case 0b11: //long + _dst->_u64 = 1; + } + (this->*_post)(); } } diff --git a/src/spider/runtime/instr/Instr_020-03F.cpp b/src/spider/runtime/instr/Instr_020-03F.cpp index 4ff096e..40166f7 100644 --- a/src/spider/runtime/instr/Instr_020-03F.cpp +++ b/src/spider/runtime/instr/Instr_020-03F.cpp @@ -9,18 +9,69 @@ namespace spider { void CPU::STB() { // TODO: Implement STB + fetchOperSrc(); + fetchOperDst(); + switch(_size){ + case 0b00: //byte + _dst->_u8 = 1; + case 0b01: //short + _dst->_u16 = 1; + case 0b10: //int + _dst->_u32 = 1; + case 0b11: //long + _dst->_u64 = 1; + } + (this->*_post)(); } void CPU::CRB() { // TODO: Implement CRB + fetchOperSrc(); + fetchOperDst(); + switch(_size){ + case 0b00: //byte + _dst->_u8 = 1; + case 0b01: //short + _dst->_u16 = 1; + case 0b10: //int + _dst->_u32 = 1; + case 0b11: //long + _dst->_u64 = 1; + } + (this->*_post)(); } void CPU::TSB() { // TODO: Implement TSB + fetchOperSrc(); + fetchOperDst(); + switch(_size){ + case 0b00: //byte + _dst->_u8 = 1; + case 0b01: //short + _dst->_u16 = 1; + case 0b10: //int + _dst->_u32 = 1; + case 0b11: //long + _dst->_u64 = 1; + } + (this->*_post)(); } void CPU::BOOL() { // TODO: Implement BOOL + fetchOperDst(); + switch(_size){ + case 0b00: //byte + _dst->_u8 = 1; + case 0b01: //short + _dst->_u16 = 1; + case 0b10: //int + _dst->_u32 = 1; + case 0b11: //long + _dst->_u64 = 1; + } + (this->*_post)(); } void CPU::NOT() {