From 30e0203df44208e5543cb987238544fd0d031e7c Mon Sep 17 00:00:00 2001 From: Diego Lopez <2109094@upy.edu.mx> Date: Wed, 8 Apr 2026 16:11:18 -0600 Subject: [PATCH] implement instructions 0x068-0x079: D2I, D2L, trig and exponential functions --- src/spider/runtime/instr/Instr_060-07F.cpp | 63 ++++++++++++++++------ 1 file changed, 48 insertions(+), 15 deletions(-) diff --git a/src/spider/runtime/instr/Instr_060-07F.cpp b/src/spider/runtime/instr/Instr_060-07F.cpp index c253bcf..e973eb3 100644 --- a/src/spider/runtime/instr/Instr_060-07F.cpp +++ b/src/spider/runtime/instr/Instr_060-07F.cpp @@ -70,63 +70,96 @@ namespace spider { } void CPU::D2I() { - // TODO: Implement D2I + fetchOperDst(); + _dst->_u32 = static_cast(_dst->_f64); + (this->*_post)(); } void CPU::D2L() { - // TODO: Implement D2L + fetchOperDst(); + _dst->_u64 = static_cast(_dst->_f64); + (this->*_post)(); } void CPU::SIN() { - // TODO: Implement SIN + fetchOperDst(); + _dst->_f64 = std::sin(_dst->_f64); + (this->*_post)(); } void CPU::COS() { - // TODO: Implement COS + fetchOperDst(); + _dst->_f64 = std::cos(_dst->_f64); + (this->*_post)(); } void CPU::TAN() { - // TODO: Implement TAN + fetchOperDst(); + _dst->_f64 = std::tan(_dst->_f64); + (this->*_post)(); } void CPU::ASIN() { - // TODO: Implement ASIN + fetchOperDst(); + _dst->_f64 = std::asin(_dst->_f64); + (this->*_post)(); } void CPU::ACOS() { - // TODO: Implement ACOS + fetchOperDst(); + _dst->_f64 = std::acos(_dst->_f64); + (this->*_post)(); } void CPU::ATAN() { - // TODO: Implement ATAN + fetchOperDst(); + _dst->_f64 = std::atan(_dst->_f64); + (this->*_post)(); } void CPU::ATAN2() { - // TODO: Implement ATAN2 + fetchOperDst(); + fetchOperSrc(); + _dst->_f64 = std::atan2(_dst->_f64, _src->_f64); + (this->*_post)(); } void CPU::EXP() { - // TODO: Implement EXP + fetchOperDst(); + _dst->_f64 = std::exp(_dst->_f64); + (this->*_post)(); } void CPU::LOG() { - // TODO: Implement LOG + fetchOperDst(); + _dst->_f64 = std::log(_dst->_f64); + (this->*_post)(); } void CPU::LOGAB() { - // TODO: Implement LOGAB + fetchOperDst(); + fetchOperSrc(); + _dst->_f64 = std::log(_dst->_f64) / std::log(_src->_f64); + (this->*_post)(); } void CPU::POW() { - // TODO: Implement POW + fetchOperDst(); + fetchOperSrc(); + _dst->_f64 = std::pow(_dst->_f64, _src->_f64); + (this->*_post)(); } void CPU::SQRT() { - // TODO: Implement SQRT + fetchOperDst(); + _dst->_f64 = std::sqrt(_dst->_f64); + (this->*_post)(); } void CPU::ROOT() { - // TODO: Implement ROOT + fetchOperDst(); + fetchOperSrc(); + _dst->_f64 = std::pow(_dst->_f64, 1.0 / _src->_f64); } void CPU::ADC() { -- 2.43.0