#include #include #include #include #include #include #include "aisa/aisa.h" #include "aisa/simple-models.h" namespace aisa { bool TaskStack::pop_task() { if (tasks.empty()) return false; tasks.pop_back(); return true; } bool TaskStack::push_task(std::unique_ptr &&task) { tasks.emplace_back(std::move(task)); return true; } std::optional TaskStack::top_task() { if (tasks.empty()) return {}; return tasks.back().get(); } std::optional VectorRF::load_reg(regnum_t rn) const { if (rf.size() <= rn) return {}; return rf[rn]; } bool VectorRF::store_reg(regnum_t rn, regval_t rv) { if (rf.size() <= rn) rf.resize(rn + 1); rf[rn] = rv; return true; } }