implement instructions 0x068-0x079: D2I, D2L, trig and exponential functions
This commit is contained in:
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user