diff --git a/src/spider/runtime/instr/Instr_000-01F.cpp b/src/spider/runtime/instr/Instr_000-01F.cpp index 89f661d..088b8d9 100644 --- a/src/spider/runtime/instr/Instr_000-01F.cpp +++ b/src/spider/runtime/instr/Instr_000-01F.cpp @@ -71,13 +71,13 @@ namespace spider { // TODO: Implement COM fetchOperDst(); switch(_size){ - case 0b00: + case 0b00: //byte _dst->_u8 = ~_dst->_u8; - case 0b01: + case 0b01: //short _dst->_u16 = ~_dst->_u16; - case 0b10: + case 0b10: //int _dst->_u32 = ~_dst->_u32; - case 0b11: + case 0b11: //long _dst->_u64 = ~_dst->_u64; } (this->*_post)(); @@ -87,13 +87,13 @@ namespace spider { // TODO: Implement NEG fetchOperDst(); switch(_size){ - case 0b00: + case 0b00: //byte _dst->_u8 = 1 + ~_dst->_u8; - case 0b01: + case 0b01: //short _dst->_u16 = 1+ ~_dst->_u16; - case 0b10: + case 0b10: //int _dst->_u32 = 1 + ~_dst->_u32; - case 0b11: + case 0b11: //long _dst->_u64 = 1 + ~_dst->_u64; } (this->*_post)(); @@ -101,6 +101,19 @@ namespace spider { void CPU::EXS() { // TODO: Implement EXS + fetchOperDst(); + switch(_size){ + case 0b00: //byte + _dst->_u32 = _dst->_u8 & 1; + case 0b01: //short + _dst->_u32 = _dst->_u16 & 1; + case 0b10: //int + _dst->_u32 = _dst->_u32 & 1; + case 0b11: //long + _dst->_u32 = _dst->_u64 & 1; + } + _dst->_u32 = _dst->_u8; + (this->*_post)(); } void CPU::INC() {