feat(furvm): add operation instructions

This commit is contained in:
2026-06-10 20:02:31 +02:00
parent 0534359503
commit 4d935ef75f
4 changed files with 145 additions and 1 deletions
+25
View File
@@ -82,6 +82,31 @@ void executor::step() {
case instruction_t::Clone: {
push_thing(std::move(thing::clone(thing())));
} break;
case instruction_t::Add: {
auto rhs = pop_thing();
auto lhs = pop_thing();
push_thing(lhs + rhs);
} break;
case instruction_t::Sub: {
auto rhs = pop_thing();
auto lhs = pop_thing();
push_thing(lhs - rhs);
} break;
case instruction_t::Mul: {
auto rhs = pop_thing();
auto lhs = pop_thing();
push_thing(lhs * rhs);
} break;
case instruction_t::Div: {
auto rhs = pop_thing();
auto lhs = pop_thing();
push_thing(lhs / rhs);
} break;
case instruction_t::Mod: {
auto rhs = pop_thing();
auto lhs = pop_thing();
push_thing(lhs % rhs);
} break;
case instruction_t::Return: {
pop_frame();
if (m_frames.empty()) m_flags = m_flags | executor_flags::Done;
+1 -1
View File
@@ -12,7 +12,7 @@ static constexpr std::array<furvm::byte, 6> s_bytecode = {
furvm::byte(furvm::instruction_t::PushB2I),
67,
furvm::byte(furvm::instruction_t::Clone),
furvm::byte(furvm::instruction_t::Drop),
furvm::byte(furvm::instruction_t::Add),
furvm::byte(furvm::instruction_t::Drop),
furvm::byte(furvm::instruction_t::Return),
};