aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-06-20 19:22:55 +0100
committerMichael Williamson <mike@zwobble.org>2023-06-20 19:22:55 +0100
commitabcddcedb332ac6154c5ef49eab78209a5d07c62 (patch)
tree02ddc238ad5b513b76d43b384e10871ae8af1798 /src/main/java
parent630842133c5de6edd61b28d0a5d704377c1bd962 (diff)
Add serialization to binary format of empty WASM module
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/wasm/structure/WasmBinaryFormat.java17
-rw-r--r--src/main/java/org/shedlang/compiler/backends/wasm/structure/ast/WasmModule.java13
2 files changed, 30 insertions, 0 deletions
diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/structure/WasmBinaryFormat.java b/src/main/java/org/shedlang/compiler/backends/wasm/structure/WasmBinaryFormat.java
new file mode 100644
index 00000000..2ec10c2a
--- /dev/null
+++ b/src/main/java/org/shedlang/compiler/backends/wasm/structure/WasmBinaryFormat.java
@@ -0,0 +1,17 @@
+package org.shedlang.compiler.backends.wasm.structure;
+
+import org.shedlang.compiler.backends.wasm.structure.ast.WasmModule;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.HexFormat;
+
+public class WasmBinaryFormat {
+ private static final byte[] WASM_MAGIC = HexFormat.of().parseHex("0061736D");
+ private static final byte[] WASM_VERSION = HexFormat.of().parseHex("01000000");
+
+ public static void serializeModule(WasmModule module, FileOutputStream outputStream) throws IOException {
+ outputStream.write(WASM_MAGIC);
+ outputStream.write(WASM_VERSION);
+ }
+}
diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/structure/ast/WasmModule.java b/src/main/java/org/shedlang/compiler/backends/wasm/structure/ast/WasmModule.java
new file mode 100644
index 00000000..a5827d58
--- /dev/null
+++ b/src/main/java/org/shedlang/compiler/backends/wasm/structure/ast/WasmModule.java
@@ -0,0 +1,13 @@
+package org.shedlang.compiler.backends.wasm.structure.ast;
+
+public record WasmModule() {
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ public record Builder() {
+ public WasmModule build() {
+ return new WasmModule();
+ }
+ }
+}