diff --git a/src/spider/runtime/instr/Instr_000-01F.cpp b/src/spider/runtime/instr/Instr_000-01F.cpp index d2933e9..89f661d 100644 --- a/src/spider/runtime/instr/Instr_000-01F.cpp +++ b/src/spider/runtime/instr/Instr_000-01F.cpp @@ -69,10 +69,34 @@ namespace spider { void CPU::COM() { // TODO: Implement COM + fetchOperDst(); + switch(_size){ + case 0b00: + _dst->_u8 = ~_dst->_u8; + case 0b01: + _dst->_u16 = ~_dst->_u16; + case 0b10: + _dst->_u32 = ~_dst->_u32; + case 0b11: + _dst->_u64 = ~_dst->_u64; + } + (this->*_post)(); } void CPU::NEG() { // TODO: Implement NEG + fetchOperDst(); + switch(_size){ + case 0b00: + _dst->_u8 = 1 + ~_dst->_u8; + case 0b01: + _dst->_u16 = 1+ ~_dst->_u16; + case 0b10: + _dst->_u32 = 1 + ~_dst->_u32; + case 0b11: + _dst->_u64 = 1 + ~_dst->_u64; + } + (this->*_post)(); } void CPU::EXS() {