blob: a49385edebbb1eb043daf7eca3a256fbc90ec247 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
const vm = @import("vm.zig");
const std = @import("std");
const Allocator = std.mem.Allocator;
pub const Type = enum(u8) {
i32 = 0x7f,
i64 = 0x7e,
f32 = 0x7d,
f64 = 0x7c,
v128 = 0x7b,
};
pub const GlobalRuntime = struct {
functions: std.StringHashMap(*const fn (stack: *std.ArrayList(vm.Value)) void),
// globals: [_]vm.Value,
pub fn init(allocator: Allocator) GlobalRuntime {
return GlobalRuntime{
.functions = std.StringHashMap(*const fn (stack: *std.ArrayList(vm.Value)) void).init(allocator),
// .globals = .{}
};
}
pub fn deinit(self: *GlobalRuntime) void {
self.functions.deinit();
}
pub fn addFunction(self: *GlobalRuntime, name: []const u8, function: *const fn (stack: *std.ArrayList(vm.Value)) void) !void {
try self.functions.put(name, function);
}
};
pub fn debug(stack: *std.ArrayList(vm.Value)) void {
const a = stack.pop().?;
std.debug.print("{}\n", .{a.i32});
}
|