From f0148dbe451cdc98f4f9a946eaff96748cc7565f Mon Sep 17 00:00:00 2001 From: AlmeidaDaniel <2309248@upy.edu.mx> Date: Sun, 29 Mar 2026 02:08:56 -0600 Subject: [PATCH] Implemented EXS instructions --- src/spider/runtime/instr/Instr_000-01F.cpp | 29 ++++++++++++++++------ 1 file changed, 21 insertions(+), 8 deletions(-) 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() {