From 28420f53b06c7be0090ebbd4f242b11f976d6f64 Mon Sep 17 00:00:00 2001 From: luccie-cmd Date: Sun, 30 Mar 2025 14:57:04 +0200 Subject: Added executing of and --- src/mods/vm.zig | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'src/mods/vm.zig') diff --git a/src/mods/vm.zig b/src/mods/vm.zig index 0d6cddf..a636cb3 100644 --- a/src/mods/vm.zig +++ b/src/mods/vm.zig @@ -107,7 +107,7 @@ pub const Runtime = struct { std.log.err("Reached unreachable statement at IR counter {any}\n", .{frame.program_counter}); frame.code.print(std.io.getStdOut().writer()) catch {}; }, - .nop => @panic("UNIMPLEMENTED"), + .nop => {}, .br => { frame.program_counter = index.u32; continue; @@ -130,8 +130,19 @@ pub const Runtime = struct { .refisnull => @panic("UNIMPLEMENTED"), .reffunc => @panic("UNIMPLEMENTED"), - .drop => @panic("UNIMPLEMENTED"), - .select => @panic("UNIMPLEMENTED"), + .drop => { + _ = self.stack.pop(); + }, + .select => { + const c = self.stack.pop().?.i32; + const val2 = self.stack.pop().?; + const val1 = self.stack.pop().?; + if (c != 0) { + try self.stack.append(val1); + } else { + try self.stack.append(val2); + } + }, .select_with_values => @panic("UNIMPLEMENTED"), .localget => try self.stack.append(frame.locals[index.u32]), -- cgit v1.2.3