Implement instructions 0x068-0x079: casts and math functions #6

Merged
Kittycannon merged 1 commits from diego/instruc-068-079 into main 2026-04-09 01:12:42 +00:00
Showing only changes of commit 30e0203df4 - Show all commits

View File

@@ -70,63 +70,96 @@ namespace spider {
}
void CPU::D2I() {
// TODO: Implement D2I
fetchOperDst();
_dst->_u32 = static_cast<u32>(_dst->_f64);
(this->*_post)();
}
void CPU::D2L() {
// TODO: Implement D2L
fetchOperDst();
_dst->_u64 = static_cast<u64>(_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() {