From e16589e95e96feea8af0493ae0b954bc15f33d9e Mon Sep 17 00:00:00 2001 From: Daniel Joseph Date: Mon, 30 Mar 2026 13:49:43 +0100 Subject: [PATCH] wasm: add WASM 1.0 binary parser and disassembler Implements a WASM 1.0 binary parser for KolibriOS written in x86 FASM. Parses all 12 sections of the WASM binary format and prints disassembly output. Tested against real WASM binaries. Sections implemented: type, import, function, table, memory, global, export, start, element, data, custom. Code section parsing is planned for the next commit. --- programs/develop/wasm/.gitignore | 7 + programs/develop/wasm/README.md | 178 ++++ programs/develop/wasm/src/core/wasm_const.inc | 251 +++++ programs/develop/wasm/src/core/wasm_func.inc | 100 ++ programs/develop/wasm/src/core/wasm_name.inc | 411 ++++++++ .../develop/wasm/src/core/wasm_parser.inc | 897 ++++++++++++++++++ .../wasm/src/kolibrios/kolibrios_main.asm | 117 +++ .../kolibrios/wasm_kolibrios_interface.inc | 65 ++ programs/develop/wasm/tests/ekun.wasm | Bin 0 -> 370703 bytes programs/develop/wasm/tests/simple.wasm | Bin 0 -> 346 bytes 10 files changed, 2026 insertions(+) create mode 100644 programs/develop/wasm/.gitignore create mode 100644 programs/develop/wasm/README.md create mode 100644 programs/develop/wasm/src/core/wasm_const.inc create mode 100644 programs/develop/wasm/src/core/wasm_func.inc create mode 100644 programs/develop/wasm/src/core/wasm_name.inc create mode 100644 programs/develop/wasm/src/core/wasm_parser.inc create mode 100644 programs/develop/wasm/src/kolibrios/kolibrios_main.asm create mode 100644 programs/develop/wasm/src/kolibrios/wasm_kolibrios_interface.inc create mode 100755 programs/develop/wasm/tests/ekun.wasm create mode 100644 programs/develop/wasm/tests/simple.wasm diff --git a/programs/develop/wasm/.gitignore b/programs/develop/wasm/.gitignore new file mode 100644 index 000000000..dd9cd193d --- /dev/null +++ b/programs/develop/wasm/.gitignore @@ -0,0 +1,7 @@ +*.swp +*.swo +*.swn +*~ +*.bin +*.o +*.obj diff --git a/programs/develop/wasm/README.md b/programs/develop/wasm/README.md new file mode 100644 index 000000000..36ef19b2a --- /dev/null +++ b/programs/develop/wasm/README.md @@ -0,0 +1,178 @@ +# kolibrios-wasm + +A WebAssembly 1.0 runtime for [KolibriOS](http://kolibrios.org/), written in x86 FASM assembly. + +## Status + +Work in progress. Current state: + +- Binary parser: WIP, tested on Linux and KolibriOS +- Validator: Not Started +- Interpreter: Not Started + +## What it does + +Parses WebAssembly 1.0 binary files according to the +[WebAssembly 1.0 spec](https://webassembly.github.io/multi-value/core/_download/WebAssembly.pdf). + +The parser currently: +- Validates the magic number and version header +- Fully parses all 12 WASM 1.0 sections +- Decodes LEB128 u32, s32 integers as specified in the spec +- Validates section boundaries — catches malformed binaries +- Prints human-readable disassembly of all decoded data +- Disassembles all 172 WASM 1.0 opcodes in function bodies (code section in progress) +- Tested against real WASM binaries on both Linux and KolibriOS (QEMU) + +## Project structure +``` +src/ + core/ + wasm_const.inc # Wasm 1.0 binary format constants + wasm_name.inc # Value type name strings + wasm_func.inc # LEB128 decoder + wasm_parser.inc # Binary parser + kolibrios/ + includes/ # KolibriOS standard includes + kolibrios_main.asm # KolibriOS entry point + wasm_kolibrios_interface.inc # Console output macros + linux/ + linux_main.asm # Linux entry point + wasm_linux_interface.inc # libc output macros +tests/ + simple.wasm + ekun.wasm +``` + +## Building + +### Linux + +Requires FASM and GCC (32-bit). +```bash +fasm src/linux/linux_main.asm linux_main.o +gcc -m32 -o parser linux_main.o -nostartfiles -lc -Wl,-e,_start +./parser tests/simple.wasm +``` + +### KolibriOS + +Requires FASM. +```bash +fasm src/kolibrios/kolibrios_main.asm wasm_dis.kex +``` + +Copy `wasm_dis.kex` to KolibriOS and run from the console: +``` +wasm_dis test.wasm +``` + +## Output + +Both platforms produce identical output. Example against a real wasm binary: +``` + ./src/parser tests/ekun.wasm +Parsing Sections... + +Section 1: Type (288 bytes): + Vec of functype (Length: 45): + functype[0]: + Params(0): + Result(0): + + functype[1]: + Params(3): i32 i32 i32 + Result(1): i32 + + functype[2]: + Params(1): i32 + Result(1): i32 + + functype[3]: + Params(1): i32 + Result(0): + + functype[4]: + Params(2): i32 i32 + Result(1): i32 + + functype[5]: + Params(0): + Result(1): i32 + + functype[6]: + Params(2): i32 i32 + Result(0): + + functype[7]: + Params(3): i32 i32 i32 + Result(0): + + functype[8]: + Params(5): i32 i64 i64 i64 i64 + Result(0): + + functype[9]: + Params(4): i32 i32 i32 i32 + Result(1): i32 + +Section 2: Import (260 bytes) + Vec of Import (Length: 9) + module: env name: exit Import type: typeidx (3) + module: env name: emscripten_asm_const_int Import type: typeidx (1) + module: env name: _emscripten_memcpy_js Import type: typeidx (7) + module: env name: emscripten_date_now Import type: typeidx (21) + module: wasi_snapshot_preview1 name: fd_close Import type: typeidx (2) + module: wasi_snapshot_preview1 name: fd_write Import type: typeidx (9) + module: wasi_snapshot_preview1 name: fd_read Import type: typeidx (9) + module: env name: emscripten_resize_heap Import type: typeidx (2) + module: wasi_snapshot_preview1 name: fd_seek Import type: typeidx (12) + +Section 3: Function (249 bytes) +Vector of Typeidx: 0 3 3 3 3 2 1 3 4 4 6 3 3 0 2 3 3 0 0 5 6 5 10 3 3 2 3 2 2 6 5 10 2 5 6 1 7 3 5 4 3 4 3 1 1 9 3 2 4 4 5 2 4 6 1 1 1 2 2 2 6 6 2 0 3 0 3 5 3 6 3 6 0 3 7 6 7 7 7 7 3 0 3 0 4 3 0 5 0 0 1 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 11 0 0 0 0 0 0 0 0 0 0 0 2 5 1 1 5 1 2 3 2 4 4 4 4 2 2 3 1 9 2 2 9 1 4 1 1 11 22 11 15 15 11 23 24 16 16 11 25 26 27 28 5 5 5 0 2 2 1 13 13 1 4 4 2 1 1 1 29 2 17 8 14 30 8 31 10 2 32 33 34 10 35 4 17 12 36 7 2 10 37 19 19 38 1 18 6 39 1 9 1 2 1 4 5 2 2 1 3 4 4 6 8 14 20 20 8 40 41 6 6 5 5 14 8 8 8 42 3 3 2 5 43 12 44 + +Section 4: Table (4 bytes) + Vector of Tabletype (Length: 1): + Tabletype with limit min: (44), and unbounded max + +Section 5: Memory (6 bytes) + Vector of Memtype (Length: 1): + Memtype: with limit min: (258), and max: (258) + +Section 6: Global (8 bytes) + Vector of Global (Length: 1): + Globaltype: i32 (var) + init: i32.const 99936 + +Section 7: Export (198 bytes) + Vector of Export (Length: 9): + name: memory Export type: memidx (0) + name: __wasm_call_ctors Export type: funcidx (9) + name: __indirect_function_table Export type: tableidx (0) + name: run_from_js Export type: funcidx (71) + name: disassemble_from_js Export type: funcidx (73) + name: _emscripten_stack_restore Export type: funcidx (250) + name: _emscripten_stack_alloc Export type: funcidx (251) + name: emscripten_stack_get_current Export type: funcidx (252) + name: dynCall_jiji Export type: funcidx (254) + +Section 9: Element (61 bytes) + Vector of Elem (Length: 1) + tableidx: 0 + offset: i32.const 1 + vector of funcidx: 109 110 111 112 113 107 108 114 98 117 119 123 131 120 122 125 126 127 128 118 129 130 105 106 116 74 103 104 132 100 101 83 85 86 87 88 178 179 181 182 216 217 221 +``` + +## Dependencies + +- [FASM](https://flatassembler.net/) +- GCC with 32-bit support: Linux build only, for linking libc +- KolibriOS with console.obj: KolibriOS build only + +## Notes + +The Linux build exists purely for development and testing. The KolibriOS build +is the actual target. Both builds share the same core parser in `src/core/` and +produce identical output, only the platform interface differs. + +This project is being developed as a GSoC 2026 contribution for KolibriOS. diff --git a/programs/develop/wasm/src/core/wasm_const.inc b/programs/develop/wasm/src/core/wasm_const.inc new file mode 100644 index 000000000..50afbaffe --- /dev/null +++ b/programs/develop/wasm/src/core/wasm_const.inc @@ -0,0 +1,251 @@ +; SPDX-License-Identifier: GPL-2.0-only +; Reshare - Shared Resources Daemon +; +; Copyright (C) 2026 KolibriOS Team + +;-------------------------------------------------------------------------- +; wasm_const.inc - WebAssembly 1.0 Binary Format Constants +; Reference: Chapter 5 (Binary Format) of Wasm 1.0 spec +; Reference Url: https://webassembly.github.io/multi-value/core/_download/WebAssembly.pdf +;--------------------------------------------------------------------------- + +; GENERAL +WASM_MAGIC = 0x6d736100 ; '\0asm' in little endian +WASM_VERSION = 0x00000001 + +; SECTIONS +SECTION_CUSTOM = 0x00 +SECTION_TYPE = 0x01 +SECTION_IMPORT = 0x02 +SECTION_FUNCTION = 0x03 +SECTION_TABLE = 0x04 +SECTION_MEMORY = 0x05 +SECTION_GLOBAL = 0x06 +SECTION_EXPORT = 0x07 +SECTION_START = 0x08 +SECTION_ELEMENT = 0x09 +SECTION_CODE = 0x0A +SECTION_DATA = 0x0B + +; Value Types +VAL_I32 = 0x7F +VAL_I64 = 0x7E +VAL_F32 = 0x7D +VAL_F64 = 0x7C + +; Import and Export Sections +FUNC_DESC = 0x00 +TABLE_DESC = 0x01 +MEM_DESC = 0x02 +GLOBAL_DESC = 0x03 + +; blocktype +BLOCK_EMPTY = 0x40 + +; function type +FUNC_START = 0x60 + +; limits +LIMIT_MIN_ONLY = 0x00 +LIMIT_MIN_MAX = 0x01 + +; table type +ELEM_FUNCREF = 0x70 + +; Global type +GLOBAL_CONST = 0x00 +GLOBAL_VAR = 0x01 + +; Instructions +; Control Instructions +OP_UNREACHABLE = 0x00 +OP_NOP = 0x01 +OP_BLOCK = 0x02 +OP_LOOP = 0x03 +OP_IF = 0x04 +OP_ELSE = 0x05 +OP_BR = 0x0C +OP_BR_IF = 0x0D +OP_BR_TABLE = 0x0E +OP_RETURN = 0x0F +OP_END = 0x0B +OP_CALL = 0x10 +OP_CALL_INDIRECT = 0x11 + +; Parametric instructions +OP_DROP = 0x1A +OP_SELECT = 0x1B + +; Variable Instructions +OP_LOCAL_GET = 0x20 +OP_LOCAL_SET = 0x21 +OP_LOCAL_TEE = 0x22 +OP_GLOBAL_GET = 0x23 +OP_GLOBAL_SET = 0x24 + +;memor8y instruction +OP_I32_LOAD = 0x28 +OP_I64_LOAD = 0x29 +OP_F32_LOAD = 0x2A +OP_F64_LOAD = 0x2B +OP_I32_LOAD8_S = 0x2C +OP_I32_LOAD8_U = 0x2D +OP_I32_LOAD16_S = 0x2E +OP_I32_LOAD16_U = 0x2F +OP_I64_LOAD8_S = 0x30 +OP_I64_LOAD8_U = 0x31 +OP_I64_LOAD16_S = 0x32 +OP_I64_LOAD16_U = 0x33 +OP_I64_LOAD32_S = 0x34 +OP_I64_LOAD32_U = 0x35 +OP_I32_STORE = 0x36 +OP_I64_STORE = 0x37 +OP_F32_STORE = 0x38 +OP_F64_STORE = 0x39 +OP_I32_STORE8 = 0x3A +OP_I32_STORE16 = 0x3B +OP_I64_STORE8 = 0x3C +OP_I64_STORE16 = 0x3D +OP_I64_STORE32 = 0x3E +OP_MEMORY_SIZE = 0x3F +OP_MEMORY_GROW = 0x40 + +; Numeric Instructions +OP_I32_CONST = 0x41 +OP_I64_CONST = 0x42 +OP_F32_CONST = 0x43 +OP_F64_CONST = 0x44 + +OP_I32_EQZ = 0x45 +OP_I32_EQ = 0x46 +OP_I32_NE = 0x47 +OP_I32_LT_S = 0x48 +OP_I32_LT_U = 0x49 +OP_I32_GT_S = 0x4A +OP_I32_GT_U = 0x4B +OP_I32_LE_S = 0x4C +OP_I32_LE_U = 0x4D +OP_I32_GE_S = 0x4E +OP_I32_GE_U = 0x4F + +OP_I64_EQZ = 0x50 +OP_I64_EQ = 0x51 +OP_I64_NE = 0x52 +OP_I64_LT_S = 0x53 +OP_I64_LT_U = 0x54 +OP_I64_GT_S = 0x55 +OP_I64_GT_U = 0x56 +OP_I64_LE_S = 0x57 +OP_I64_LE_U = 0x58 +OP_I64_GE_S = 0x59 +OP_I64_GE_U = 0x5A + +OP_F32_EQ = 0x5B +OP_F32_NE = 0x5C +OP_F32_LT = 0x5D +OP_F32_GT = 0x5E +OP_F32_LE = 0x5F +OP_F32_GE = 0x60 + +OP_F64_EQ = 0x61 +OP_F64_NE = 0x62 +OP_F64_LT = 0x63 +OP_F64_GT = 0x64 +OP_F64_LE = 0x65 +OP_F64_GE = 0x66 + +OP_I32_CLZ = 0x67 +OP_I32_CTZ = 0x68 +OP_I32_POPCNT = 0x69 +OP_I32_ADD = 0x6A +OP_I32_SUB = 0x6B +OP_I32_MUL = 0x6C +OP_I32_DIV_S = 0x6D +OP_I32_DIV_U = 0x6E +OP_I32_REM_S = 0x6F +OP_I32_REM_U = 0x70 +OP_I32_AND = 0x71 +OP_I32_OR = 0x72 +OP_I32_XOR = 0x73 +OP_I32_SHL = 0x74 +OP_I32_SHR_S = 0x75 +OP_I32_SHR_U = 0x76 +OP_I32_ROTL = 0x77 +OP_I32_ROTR = 0x78 + +OP_I64_CLZ = 0x79 +OP_I64_CTZ = 0x7A +OP_I64_POPCNT = 0x7B +OP_I64_ADD = 0x7C +OP_I64_SUB = 0x7D +OP_I64_MUL = 0x7E +OP_I64_DIV_S = 0x7F +OP_I64_DIV_U = 0x80 +OP_I64_REM_S = 0x81 +OP_I64_REM_U = 0x82 +OP_I64_AND = 0x83 +OP_I64_OR = 0x84 +OP_I64_XOR = 0x85 +OP_I64_SHL = 0x86 +OP_I64_SHR_S = 0x87 +OP_I64_SHR_U = 0x88 +OP_I64_ROTL = 0x89 +OP_I64_ROTR = 0x8A + + +OP_F32_ABS = 0x8B +OP_F32_NEG = 0x8C +OP_F32_CEIL = 0x8D +OP_F32_FLOOR = 0x8E +OP_F32_TRUNC = 0x8F +OP_F32_NEAREST = 0x90 +OP_F32_SQRT = 0x91 +OP_F32_ADD = 0x92 +OP_F32_SUB = 0x93 +OP_F32_MUL = 0x94 +OP_F32_DIV = 0x95 +OP_F32_MIN = 0x96 +OP_F32_MAX = 0x97 +OP_F32_COPYSIGN = 0x98 + +OP_F64_ABS = 0x99 +OP_F64_NEG = 0x9A +OP_F64_CEIL = 0x9B +OP_F64_FLOOR = 0x9C +OP_F64_TRUNC = 0x9D +OP_F64_NEAREST = 0x9E +OP_F64_SQRT = 0x9F +OP_F64_ADD = 0xA0 +OP_F64_SUB = 0xA1 +OP_F64_MUL = 0xA2 +OP_F64_DIV = 0xA3 +OP_F64_MIN = 0xA4 +OP_F64_MAX = 0xA5 +OP_F64_COPYSIGN = 0xA6 + +; Conversions +OP_I32_WRAP_I64 = 0xA7 +OP_I32_TRUNC_F32_S = 0xA8 +OP_I32_TRUNC_F32_U = 0xA9 +OP_I32_TRUNC_F64_S = 0xAA +OP_I32_TRUNC_F64_U = 0xAB +OP_I64_EXTEND_I32_S = 0xAC +OP_I64_EXTEND_I32_U = 0xAD +OP_I64_TRUNC_F32_S = 0xAE +OP_I64_TRUNC_F32_U = 0xAF +OP_I64_TRUNC_F64_S = 0xB0 +OP_I64_TRUNC_F64_U = 0xB1 +OP_F32_CONVERT_I32_S = 0xB2 +OP_F32_CONVERT_I32_U = 0xB3 +OP_F32_CONVERT_I64_S = 0xB4 +OP_F32_CONVERT_I64_U = 0xB5 +OP_F32_DEMOTE_F64 = 0xB6 +OP_F64_CONVERT_I32_S = 0xB7 +OP_F64_CONVERT_I32_U = 0xB8 +OP_F64_CONVERT_I64_S = 0xB9 +OP_F64_CONVERT_I64_U = 0xBA +OP_F64_PROMOTE_F32 = 0xBB +OP_I32_REINTERPRET_F32 = 0xBC +OP_I64_REINTERPRET_F64 = 0xBD +OP_F32_REINTERPRET_I32 = 0xBE +OP_F64_REINTERPRET_I64 = 0xBF diff --git a/programs/develop/wasm/src/core/wasm_func.inc b/programs/develop/wasm/src/core/wasm_func.inc new file mode 100644 index 000000000..fda8af487 --- /dev/null +++ b/programs/develop/wasm/src/core/wasm_func.inc @@ -0,0 +1,100 @@ +; SPDX-License-Identifier: GPL-2.0-only +; Reshare - Shared Resources Daemon +; +; Copyright (C) 2026 KolibriOS Team +;---------------------------------------------------- +; wasm_func.inc: Utility functions for wasm +;--------------------------------------------------- + + +;--------------------------------------------------- +; decode_leb128_u32 +; +; decode an unsigned leb128 number +; use the algorithm described by Wikipedia: https://en.wikipedia.org/wiki/LEB128 +; +; accept: ebx a pointer to the address to decode +; move ebx past the leb128 number +; wasm allows multiple 0 to follow unsigned leb128, our decoder just discard it +; automatically because the shift would overflow the register +; -------------------------------------------------- + +leb128_decode_u32: + push ecx + push esi + push edx + xor eax, eax ; accumulator + xor ecx, ecx ; shift amount +.loop: + cmp ecx, 35 + jge .error + movzx esi, byte [ebx] + advance + mov edx, esi + and edx, 0x7F + shl edx, cl + or eax, edx + add ecx, 7 + cmp ecx, 35 + jne .continue + test esi, 0xf0 + jnz .terminal_error +.continue: + test esi, 0x80 + jnz .loop + pop edx + pop esi + pop ecx + ret +.terminal_error: + println "Error while decoding leb128 integer: u32 terminal bytes can not have upper bits set" + jmp parse_error +.error: + println "Error while decoding leb128 integer: u32 must not exceed 5 bytes" + jmp parse_error + +leb128_decode_s32: + push ecx + push esi + push edx + xor eax, eax ; accumulator + xor ecx, ecx ; shift amount +.loop: + cmp ecx, 35 + jge .error + movzx esi, byte [ebx] + advance + mov edx, esi + and edx, 0x7F + shl edx, cl + or eax, edx + add ecx, 7 + test esi, 0x80 + jnz .loop + cmp ecx, 32 + jge .done + test esi, 0x40 + jz .done + xor esi, esi + not esi + shl esi, cl + or eax, esi +.done: + pop edx + pop esi + pop ecx + ret +.error: + println "Error while decoding leb128 integer: i32 must not exceed 4 bytes" + jmp parse_error + + +leb128_decode_s64: + push ecx + push esi + push edx + push ebp + push edi + xor eax, eax +.loop: + diff --git a/programs/develop/wasm/src/core/wasm_name.inc b/programs/develop/wasm/src/core/wasm_name.inc new file mode 100644 index 000000000..f5a980bae --- /dev/null +++ b/programs/develop/wasm/src/core/wasm_name.inc @@ -0,0 +1,411 @@ +; SPDX-License-Identifier: GPL-2.0-only +; Reshare - Shared Resources Daemon +; +; Copyright (C) 2026 KolibriOS Team + +; valtype +str_i32 db "i32", 0 +str_i64 db "i64", 0 +str_f32 db "f32", 0 +str_f64 db "f64", 0 +valtype: + dd VAL_I32, str_i32 + dd VAL_I64, str_i64 + dd VAL_F32, str_f32 + dd VAL_F64, str_f64 + dd 0 + +str_op_unreachable db "unreachable", 0 +str_op_nop db "nop", 0 +str_op_block db "block", 0 +str_op_loop db "loop", 0 +str_op_if db "if", 0 +str_op_br db "br", 0 +str_op_br_if db "br_if", 0 +str_op_br_table db "br_table", 0 +str_op_return db "return", 0 +str_op_call db "call", 0 +str_op_call_indirect db "call_indirect", 0 +str_op_drop db "drop", 0 +str_op_select db "select", 0 +str_op_local_get db "local.get", 0 +str_op_local_set db "local.set", 0 +str_op_local_tee db "local.tee", 0 +str_op_global_get db "global.get", 0 +str_op_global_set db "global.set", 0 +str_op_i32_load db "i32.load", 0 +str_op_i64_load db "i64.load", 0 +str_op_f32_load db "f32.load", 0 +str_op_f64_load db "f64.load", 0 +str_op_i32_load8_s db "i32.load8_s", 0 +str_op_i32_load8_u db "i32.load8_u", 0 +str_op_i32_load16_s db "i32.load16_s", 0 +str_op_i32_load16_u db "i32.load16_u", 0 +str_op_i64_load8_s db "i64.load8_s", 0 +str_op_i64_load8_u db "i64.load8_u", 0 +str_op_i64_load16_s db "i64.load16_s", 0 +str_op_i64_load16_u db "i64.load16_u", 0 +str_op_i64_load32_s db "i64.load32_s", 0 +str_op_i64_load32_u db "i64.load32_u", 0 +str_op_i32_store db "i32.store", 0 +str_op_i64_store db "i64.store", 0 +str_op_f32_store db "f32.store", 0 +str_op_f64_store db "f64.store", 0 +str_op_i32_store8 db "i32.store8", 0 +str_op_i32_store16 db "i32.store16", 0 +str_op_i64_store8 db "i64.store8", 0 +str_op_i64_store16 db "i64.store16", 0 +str_op_i64_store32 db "i64.store32", 0 +str_op_memory_size db "memory.size", 0 +str_op_memory_grow db "memory.grow", 0 +str_op_i32_const db "i32.const", 0 +str_op_i64_const db "i64.const", 0 +str_op_f32_const db "f32.const", 0 +str_op_f64_const db "f64.const", 0 +str_op_i32_eqz db "i32.eqz", 0 +str_op_i32_eq db "i32.eq", 0 +str_op_i32_ne db "i32.ne", 0 +str_op_i32_lt_s db "i32.lt_s", 0 +str_op_i32_lt_u db "i32.lt_u", 0 +str_op_i32_gt_s db "i32.gt_s", 0 +str_op_i32_gt_u db "i32.gt_u", 0 +str_op_i32_le_s db "i32.le_s", 0 +str_op_i32_le_u db "i32.le_u", 0 +str_op_i32_ge_s db "i32.ge_s", 0 +str_op_i32_ge_u db "i32.ge_u", 0 +str_op_i64_eqz db "i64.eqz", 0 +str_op_i64_eq db "i64.eq", 0 +str_op_i64_ne db "i64.ne", 0 +str_op_i64_lt_s db "i64.lt_s", 0 +str_op_i64_lt_u db "i64.lt_u", 0 +str_op_i64_gt_s db "i64.gt_s", 0 +str_op_i64_gt_u db "i64.gt_u", 0 +str_op_i64_le_s db "i64.le_s", 0 +str_op_i64_le_u db "i64.le_u", 0 +str_op_i64_ge_s db "i64.ge_s", 0 +str_op_i64_ge_u db "i64.ge_u", 0 +str_op_f32_eq db "f32.eq", 0 +str_op_f32_ne db "f32.ne", 0 +str_op_f32_lt db "f32.lt", 0 +str_op_f32_gt db "f32.gt", 0 +str_op_f32_le db "f32.le", 0 +str_op_f32_ge db "f32.ge", 0 +str_op_f64_eq db "f64.eq", 0 +str_op_f64_ne db "f64.ne", 0 +str_op_f64_lt db "f64.lt", 0 +str_op_f64_gt db "f64.gt", 0 +str_op_f64_le db "f64.le", 0 +str_op_f64_ge db "f64.ge", 0 +str_op_i32_clz db "i32.clz", 0 +str_op_i32_ctz db "i32.ctz", 0 +str_op_i32_popcnt db "i32.popcnt", 0 +str_op_i32_add db "i32.add", 0 +str_op_i32_sub db "i32.sub", 0 +str_op_i32_mul db "i32.mul", 0 +str_op_i32_div_s db "i32.div_s", 0 +str_op_i32_div_u db "i32.div_u", 0 +str_op_i32_rem_s db "i32.rem_s", 0 +str_op_i32_rem_u db "i32.rem_u", 0 +str_op_i32_and db "i32.and", 0 +str_op_i32_or db "i32.or", 0 +str_op_i32_xor db "i32.xor", 0 +str_op_i32_shl db "i32.shl", 0 +str_op_i32_shr_s db "i32.shr_s", 0 +str_op_i32_shr_u db "i32.shr_u", 0 +str_op_i32_rotl db "i32.rotl", 0 +str_op_i32_rotr db "i32.rotr", 0 +str_op_i64_clz db "i64.clz", 0 +str_op_i64_ctz db "i64.ctz", 0 +str_op_i64_popcnt db "i64.popcnt", 0 +str_op_i64_add db "i64.add", 0 +str_op_i64_sub db "i64.sub", 0 +str_op_i64_mul db "i64.mul", 0 +str_op_i64_div_s db "i64.div_s", 0 +str_op_i64_div_u db "i64.div_u", 0 +str_op_i64_rem_s db "i64.rem_s", 0 +str_op_i64_rem_u db "i64.rem_u", 0 +str_op_i64_and db "i64.and", 0 +str_op_i64_or db "i64.or", 0 +str_op_i64_xor db "i64.xor", 0 +str_op_i64_shl db "i64.shl", 0 +str_op_i64_shr_s db "i64.shr_s", 0 +str_op_i64_shr_u db "i64.shr_u", 0 +str_op_i64_rotl db "i64.rotl", 0 +str_op_i64_rotr db "i64.rotr", 0 +str_op_f32_abs db "f32.abs", 0 +str_op_f32_neg db "f32.neg", 0 +str_op_f32_ceil db "f32.ceil", 0 +str_op_f32_floor db "f32.floor", 0 +str_op_f32_trunc db "f32.trunc", 0 +str_op_f32_nearest db "f32.nearest", 0 +str_op_f32_sqrt db "f32.sqrt", 0 +str_op_f32_add db "f32.add", 0 +str_op_f32_sub db "f32.sub", 0 +str_op_f32_mul db "f32.mul", 0 +str_op_f32_div db "f32.div", 0 +str_op_f32_min db "f32.min", 0 +str_op_f32_max db "f32.max", 0 +str_op_f32_copysign db "f32.copysign", 0 +str_op_f64_abs db "f64.abs", 0 +str_op_f64_neg db "f64.neg", 0 +str_op_f64_ceil db "f64.ceil", 0 +str_op_f64_floor db "f64.floor", 0 +str_op_f64_trunc db "f64.trunc", 0 +str_op_f64_nearest db "f64.nearest", 0 +str_op_f64_sqrt db "f64.sqrt", 0 +str_op_f64_add db "f64.add", 0 +str_op_f64_sub db "f64.sub", 0 +str_op_f64_mul db "f64.mul", 0 +str_op_f64_div db "f64.div", 0 +str_op_f64_min db "f64.min", 0 +str_op_f64_max db "f64.max", 0 +str_op_f64_copysign db "f64.copysign", 0 +str_op_i32_wrap_i64 db "i32.wrap_i64", 0 +str_op_i32_trunc_f32_s db "i32.trunc_f32_s", 0 +str_op_i32_trunc_f32_u db "i32.trunc_f32_u", 0 +str_op_i32_trunc_f64_s db "i32.trunc_f64_s", 0 +str_op_i32_trunc_f64_u db "i32.trunc_f64_u", 0 +str_op_i64_extend_i32_s db "i64.extend_i32_s", 0 +str_op_i64_extend_i32_u db "i64.extend_i32_u", 0 +str_op_i64_trunc_f32_s db "i64.trunc_f32_s", 0 +str_op_i64_trunc_f32_u db "i64.trunc_f32_u", 0 +str_op_i64_trunc_f64_s db "i64.trunc_f64_s", 0 +str_op_i64_trunc_f64_u db "i64.trunc_f64_u", 0 +str_op_f32_convert_i32_s db "f32.convert_i32_s", 0 +str_op_f32_convert_i32_u db "f32.convert_i32_u", 0 +str_op_f32_convert_i64_s db "f32.convert_i64_s", 0 +str_op_f32_convert_i64_u db "f32.convert_i64_u", 0 +str_op_f32_demote_f64 db "f32.demote_f64", 0 +str_op_f64_convert_i32_s db "f64.convert_i32_s", 0 +str_op_f64_convert_i32_u db "f64.convert_i32_u", 0 +str_op_f64_convert_i64_s db "f64.convert_i64_s", 0 +str_op_f64_convert_i64_u db "f64.convert_i64_u", 0 +str_op_f64_promote_f32 db "f64.promote_f32", 0 +str_op_i32_reinterpret_f32 db "i32.reinterpret_f32", 0 +str_op_i64_reinterpret_f64 db "i64.reinterpret_f64", 0 +str_op_f32_reinterpret_i32 db "f32.reinterpret_i32", 0 +str_op_f64_reinterpret_i64 db "f64.reinterpret_i64", 0 +str_invalid db "", 0 + +opcode_str_table: + dd str_op_unreachable + dd str_op_nop + dd str_op_block + dd str_op_loop + dd str_op_if + rept 7 { dd str_invalid } ; shouldn't be printed + + dd str_op_br + dd str_op_br_if + dd str_op_br_table + dd str_op_return + dd str_op_call + dd str_op_call_indirect + rept 8 { dd str_invalid } + + dd str_op_drop + dd str_op_select + rept 4 { dd str_invalid } + + dd str_op_local_get + dd str_op_local_set + dd str_op_local_tee + dd str_op_global_get + dd str_op_global_set + rept 3 {dd str_invalid} + + dd str_op_i32_load + dd str_op_i64_load + dd str_op_f32_load + dd str_op_f64_load + dd str_op_i32_load8_s + dd str_op_i32_load8_u + dd str_op_i32_load16_s + dd str_op_i32_load16_u + + dd str_op_i64_load8_s + dd str_op_i64_load8_u + dd str_op_i64_load16_s + dd str_op_i64_load16_u + dd str_op_i64_load32_s + dd str_op_i64_load32_u + + dd str_op_i32_store + dd str_op_i64_store + dd str_op_f32_store + dd str_op_f64_store + dd str_op_i32_store8 + dd str_op_i32_store16 + dd str_op_i64_store8 + dd str_op_i64_store16 + dd str_op_i64_store32 + dd str_op_memory_size + dd str_op_memory_grow + dd str_op_i32_const + dd str_op_i64_const + dd str_op_f32_const + dd str_op_f64_const + + dd str_op_i32_eqz + dd str_op_i32_eq + dd str_op_i32_ne + dd str_op_i32_lt_s + dd str_op_i32_lt_u + dd str_op_i32_gt_s + dd str_op_i32_gt_u + dd str_op_i32_le_s + dd str_op_i32_le_u + dd str_op_i32_ge_s + dd str_op_i32_ge_u + + dd str_op_i64_eqz + dd str_op_i64_eq + dd str_op_i64_ne + dd str_op_i64_lt_s + dd str_op_i64_lt_u + dd str_op_i64_gt_s + dd str_op_i64_gt_u + dd str_op_i64_le_s + dd str_op_i64_le_u + dd str_op_i64_ge_s + dd str_op_i64_ge_u + + dd str_op_f32_eq + dd str_op_f32_ne + dd str_op_f32_lt + dd str_op_f32_gt + dd str_op_f32_le + dd str_op_f32_ge + + dd str_op_f64_eq + dd str_op_f64_ne + dd str_op_f64_lt + dd str_op_f64_gt + dd str_op_f64_le + dd str_op_f64_ge + + dd str_op_i32_clz + dd str_op_i32_ctz + dd str_op_i32_popcnt + dd str_op_i32_add + dd str_op_i32_sub + dd str_op_i32_mul + dd str_op_i32_div_s + dd str_op_i32_div_u + dd str_op_i32_rem_s + dd str_op_i32_rem_u + dd str_op_i32_and + dd str_op_i32_or + dd str_op_i32_xor + dd str_op_i32_shl + dd str_op_i32_shr_s + dd str_op_i32_shr_u + dd str_op_i32_rotl + dd str_op_i32_rotr + + dd str_op_i64_clz + dd str_op_i64_ctz + dd str_op_i64_popcnt + dd str_op_i64_add + dd str_op_i64_sub + dd str_op_i64_mul + dd str_op_i64_div_s + dd str_op_i64_div_u + dd str_op_i64_rem_s + dd str_op_i64_rem_u + dd str_op_i64_and + dd str_op_i64_or + dd str_op_i64_xor + dd str_op_i64_shl + dd str_op_i64_shr_s + dd str_op_i64_shr_u + dd str_op_i64_rotl + dd str_op_i64_rotr + + dd str_op_f32_abs + dd str_op_f32_neg + dd str_op_f32_ceil + dd str_op_f32_floor + dd str_op_f32_trunc + dd str_op_f32_nearest + dd str_op_f32_sqrt + dd str_op_f32_add + dd str_op_f32_sub + dd str_op_f32_mul + dd str_op_f32_div + dd str_op_f32_min + dd str_op_f32_max + dd str_op_f32_copysign + + dd str_op_f64_abs + dd str_op_f64_neg + dd str_op_f64_ceil + dd str_op_f64_floor + dd str_op_f64_trunc + dd str_op_f64_nearest + dd str_op_f64_sqrt + dd str_op_f64_add + dd str_op_f64_sub + dd str_op_f64_mul + dd str_op_f64_div + dd str_op_f64_min + dd str_op_f64_max + dd str_op_f64_copysign + + dd str_op_i32_wrap_i64 + dd str_op_i32_trunc_f32_s + dd str_op_i32_trunc_f32_u + dd str_op_i32_trunc_f64_s + dd str_op_i32_trunc_f64_u + dd str_op_i64_extend_i32_s + dd str_op_i64_extend_i32_u + dd str_op_i64_trunc_f32_s + dd str_op_i64_trunc_f32_u + dd str_op_i64_trunc_f64_s + dd str_op_i64_trunc_f64_u + dd str_op_f32_convert_i32_s + dd str_op_f32_convert_i32_u + dd str_op_f32_convert_i64_s + dd str_op_f32_convert_i64_u + dd str_op_f32_demote_f64 + dd str_op_f64_convert_i32_s + dd str_op_f64_convert_i32_u + dd str_op_f64_convert_i64_s + dd str_op_f64_convert_i64_u + dd str_op_f64_promote_f32 + dd str_op_i32_reinterpret_f32 + dd str_op_i64_reinterpret_f64 + dd str_op_f32_reinterpret_i32 + dd str_op_f64_reinterpret_i64 + +assert ($ - opcode_str_table) = (192 * 4) + +opcode_parse_table: + dd parse_op_simple ;0x00 + dd parse_op_simple ; 0x01 + dd parse_op_block ; 0x02 + dd parse_op_block ; 0x03 + dd parse_op_if ; 0x04 + rept 7 { dd parse_error }; no opcode taken or opcode are part of other opcode + dd parse_op_u32 ; 0x0c + dd parse_op_u32 ; 0x0d + dd parse_op_br_table ; 0x0e + dd parse_op_simple ; 0x0f + dd parse_op_u32 ; 0x10 + dd parse_call_indirect ; 0x11 + rept 8 { dd parse_error} ; 0x12 - 0x + dd parse_op_simple ; 0x1a + dd parse_op_simple ; 0x1b + rept 4 { dd parse_error} + rept 5 { dd parse_op_u32 } ; 0x20 - 0x24 + rept 3 { dd parse_error } ; 0x25 - 0x27 Reserved + rept 23 { dd parse_op_memarg } ; 0x28 - 0x3e + dd parse_mem_inst + dd parse_mem_inst + dd parse_op_i32 + dd parse_op_i64 + dd parse_op_f32 + dd parse_op_f64 + rept 123 { dd parse_op_simple } + +assert ($ - opcode_parse_table) = (192 * 4) diff --git a/programs/develop/wasm/src/core/wasm_parser.inc b/programs/develop/wasm/src/core/wasm_parser.inc new file mode 100644 index 000000000..fd34dd6f7 --- /dev/null +++ b/programs/develop/wasm/src/core/wasm_parser.inc @@ -0,0 +1,897 @@ +; SPDX-License-Identifier: GPL-2.0-only +; Reshare - Shared Resources Daemon +; +; Copyright (C) 2026 KolibriOS Team + + +; --------------------------------------------------------------------- +; wasm_parser.inc +; WASM BINARY PARSER +; Parse the Binary Format described in the Wasm 1.0 Spec +; --------------------------------------------------------------------- + +include 'wasm_const.inc' +include 'wasm_name.inc' + +buf_ptr dd ? +buf_siz dd ? +buf_end dd ? +func_idx dd 0 + +parse_saved_esp dd 0 +parse_saved_ebp dd 0 + +macro advance{ + inc ebx +} + +include 'wasm_func.inc' + +;--------------------------------------------- +; print a string word for a valtype +; accept ebx - pointer holding valtype +; return eax - 0 on success, 1 on error +; -------------------------------------------- + +valtype_to_str: + push esi + mov esi, valtype +.loop: + cmp dword [esi], 0 + je .error + movzx eax, byte [ebx] + cmp [esi], eax + je .found + add esi, 8 + jmp .loop + +.error: + println "Unknown byte 0x%x", eax + mov eax, 1 + pop esi + ret +.found: + add esi, 4 + print " %s ", dword [esi] + xor eax, eax +.exit: + pop esi + ret + +section_parse_table: + dd parse_custom_sec + dd parse_type_sec + dd parse_import_sec + dd parse_function_sec + dd parse_table_sec + dd parse_memory_sec + dd parse_global_sec + dd parse_export_sec + dd parse_start_sec + dd parse_element_sec + dd parse_code_sec + dd parse_data_sec + +;---------------------------------------------------------- +; wasm_parse: Parse a Wasm Binary +; INPUT: +; eax - Buffer address containing the binary +; ebx - Buffer size + +; register usage +; ebx - current pointer to buffer +; eax - scratch register +; --------------------------------------------------------- +wasm_parse: +; a wasm binary at least have a 4 bytes magic and 4 bytes header + cmp ebx, 0x08 + jb .too_small + mov [buf_ptr], eax + mov [buf_siz], ebx + lea ecx, [ebx + eax] + mov [buf_end], ecx + ; println "Buf start: 0x%x, buf_size: %d, buf_end: 0x%x", eax, ebx, ecx + mov ebx, eax + ; save for error recovery + mov [parse_saved_esp], esp + mov [parse_saved_ebp], ebp +.parse_module: + call check_header + call parse_sections + +.parse_end: + println "Successfully parsed wasm binary" + ret + +.too_small: + println "Refusing to parse a file of size: 0x%x without wasm header", ebx + ret + +check_header: + cmp dword [ebx], WASM_MAGIC + jne .magic_error + add ebx, 4 + cmp dword [ebx], WASM_VERSION + jne .version_error + add ebx, 4 + ret +.magic_error: + println "Error, Magic Number 0x%x does not match required 0x%x", dword [ebx], WASM_MAGIC + jmp parse_error + +.version_error: + println "Error, Version Number 0x%x does not match required 0x%x", dword [ebx], WASM_VERSION + jmp parse_error + + +; each binary part is a section +parse_sections: + println "Parsing Sections..." +@@: + movzx eax, byte [ebx] + advance + cmp eax, SECTION_DATA ; biggest section number in SECTION + ja .section_skip + call dword [section_parse_table + eax * 4] + mov eax, [buf_end] + cmp ebx, eax + jge @f + jmp @b +.section_skip: + println "In section skip" + call leb128_decode_u32 + add ebx, eax + mov eax, [buf_end] + cmp ebx, eax + jge @f + jmp @b +@@: + ret + +parse_custom_sec: + call leb128_decode_u32 + println "" + println "Section 0: Custom (%d bytes)", eax + ; do nothing but skip section + lea esi, [ebx + eax] ; save end pointer to advance later + ; print name + call leb128_decode_u32 + println " name: %.*s", eax, ebx ; write ebx of length eax + mov ebx, esi ;skip + ret + +parse_type_sec: + call leb128_decode_u32 + println "" + println "Section 1: Type (%d bytes): ", eax + + add eax, ebx + push eax + ; type : vec + call leb128_decode_u32 + println " Vec of functype (Length: %d): ", eax + mov edi, eax +.loop: + test edi, edi + jz .done + call parse_functype + dec edi + jmp .loop + +.done: + pop esi + cmp esi, ebx + jne .error + ret +.error: + println "Invalid section size for section: type" + jmp parse_error + +parse_functype: ; function start with 0x60 + cmp byte [ebx], FUNC_START + je .continue + + println "Invalid byte while parsing function. Function should start with %d", FUNC_START + jmp parse_error + +.continue: + println " functype[%d]:", dword [func_idx] + inc [func_idx] + advance + call parse_vec_param + call parse_vec_result + println "" + ret + +parse_vec_param: + push edi + call leb128_decode_u32 + mov edi, eax + print " Params(%d): ", edi + +.loop: + test edi, edi + jz .done + call valtype_to_str + test eax, eax + ja parse_error + advance + dec edi + jmp .loop +.done: + println "" + pop edi + ret + +parse_vec_result: + push edi + call leb128_decode_u32 + mov edi, eax + print " Result(%d): ", edi + +.loop: + test edi, edi + jz .done + call valtype_to_str + test eax, eax + ja parse_error + advance + dec edi + jmp .loop +.done: + println "" + pop edi + ret + +parse_import_sec: + call leb128_decode_u32 + println "" + println "Section 2: Import (%d bytes)", eax + add eax, ebx + push eax + call leb128_decode_u32 + println " Vec of Import (Length: %d)", eax + mov edi, eax + +.loop: + test edi, edi + jz .done + call parse_import + dec edi + jmp .loop +.done: + pop esi + cmp ebx, esi + jne .error + ret +.error: + println "Invalid section size for import. ebx: (0x%x), esi: (0x%x", ebx, esi + jmp parse_error + +parse_import: +; parse modname first + call leb128_decode_u32 + print " module: %.*s", eax, ebx + add ebx, eax +; parse nm + call leb128_decode_u32 + print " name: %.*s ", eax, ebx + add ebx, eax + +parse_importdesc: + movzx eax, byte [ebx] + advance + test eax, eax + je .typeidx + cmp eax, 0x01 + je .tabletype + cmp eax, 0x02 + je .memtype + cmp eax, 0x03 + je .globaltype + +.typeidx: + call leb128_decode_u32 + println " Import type: typeidx (%d)", eax + ret +.tabletype: + print " Import type: " + jmp parse_table_type + +.memtype: + print " Import type: " + jmp parse_memtype + +.globaltype: + print " Import type: " + jmp parse_globaltype + + +parse_table_type: + cmp byte [ebx], 0x70 + je @f + movzx eax, byte [ebx] + println "Error: Expecting funcref element type buf found (0x%x)", eax + jmp parse_error +@@: + advance + print "Tabletype " + jmp parse_limits + + + +parse_memtype: + print "Memtype: " +parse_limits: + movzx eax, byte [ebx] + advance + test eax, eax + je .min + cmp eax, LIMIT_MIN_MAX + je .minmax + println "Invalid Limit parsed" + jmp parse_error +.min: + call leb128_decode_u32 + println " with limit min: (%d), and unbounded max", eax + ret +.minmax: + call leb128_decode_u32 + print " with limit min: (%d)", eax + call leb128_decode_u32 + println ", and max: (%d)", eax + ret + + +parse_globaltype: + print "Globaltype: " + call valtype_to_str + test eax, eax + jne .valtype_error + advance + movzx eax, byte[ebx] + advance + +; check if mutable or constant + test eax, eax + jne .check_var + println "(const)" + ret + +.check_var: + cmp eax, GLOBAL_VAR + jne .mut_error + println "(var)" + ret + +.valtype_error: + movzx eax, byte [ebx] + println " Invalid Valtype (0x%x)", eax + jmp parse_error +.mut_error: + println " Invalid mutable type (%x)", eax + jmp parse_error + + +parse_function_sec: + call leb128_decode_u32 + println "" + println "Section 3: Function (%d bytes)", eax + add eax, ebx + push eax +; function is vec(typeidx) + + call leb128_decode_u32 + mov edi, eax + print "Vector of Typeidx: " +.loop: + test edi, edi + jz .done + call leb128_decode_u32 + print " %d ", eax + dec edi + jmp .loop +.done: + pop esi + cmp esi, ebx + jne .error + println "" + ret +.error: + println "Error while parsing function section. Section size is incorrect" + jmp parse_error + + +parse_table_sec: + call leb128_decode_u32 + println "" + println "Section 4: Table (%d bytes)", eax + add eax, ebx + push eax +; table is a vector of tabletype + call leb128_decode_u32 + mov edi, eax + println " Vector of Tabletype (Length: %d): ", edi +.loop: + test edi, edi + jz .done + print " " + call parse_table_type + dec edi + jmp .loop +.done: + pop esi + cmp ebx, esi + jne .error + ret +.error: + println "Error while parsing table section: Section size is incorrect" + jmp parse_error + + +parse_memory_sec: + call leb128_decode_u32 + println "" + println "Section 5: Memory (%d bytes)", eax + add eax, ebx + push eax +; memory section is a vector of memtype + call leb128_decode_u32 + println " Vector of Memtype (Length: %d): ", eax + mov edi, eax + +.loop: + test edi, edi + jz .done + print " " + call parse_memtype + dec edi + jmp .loop +.done: + pop esi + cmp ebx, esi + jne .error + ret +.error: + println "Error while parsing memory section: Section size is incorrect" + jmp parse_error + + +parse_global_sec: + call leb128_decode_u32 + println "" + println "Section 6: Global (%d bytes)", eax + add eax, ebx + push eax +; global section is a vector of global + call leb128_decode_u32 + println " Vector of Global (Length: %d): ", eax + mov edi, eax +.loop: + test edi, edi + jz .done + print " " + call parse_globaltype + print " init: " + call parse_const_expr + dec edi + jmp .loop +.done: + pop esi + cmp esi, ebx + jne .error + ret +.error: + println "Error while parsing global section: Section size is incorrect" + jmp parse_error + + +parse_export_sec: + call leb128_decode_u32 + println "" + println "Section 7: Export (%d bytes)", eax + add eax, ebx + push eax + call leb128_decode_u32 + println " Vector of Export (Length: %d): ", eax + mov edi, eax +.loop: + test edi, edi + jz .done + call parse_export + dec edi + jmp .loop +.done: + pop esi + cmp esi, ebx + jne .error + ret +.error: + println "Error while parsing export section: Section size is incorrect" + jmp parse_error + + +parse_export: +; parse nm + call leb128_decode_u32 + print " name: %.*s ", eax, ebx + add ebx, eax + + movzx eax, byte [ebx] + advance + test eax, eax + je .funcidx + cmp eax, 0x01 + je .tableidx + cmp eax, 0x02 + je .memidx + cmp eax, 0x03 + je .globalidx + +.funcidx: + call leb128_decode_u32 + println " Export type: funcidx (%d)", eax + ret + +.tableidx: + call leb128_decode_u32 + println " Export type: tableidx (%d)", eax + ret + +.memidx: + call leb128_decode_u32 + println " Export type: memidx (%d)", eax + ret + +.globalidx: + call leb128_decode_u32 + println " Export type: globalidx (%d)", eax + ret + +parse_start_sec: + call leb128_decode_u32 + println "" + println "Section 8: Start (%d bytes)", eax + add eax, ebx + push eax + call leb128_decode_u32 + println " Function index: %d", eax + pop eax + cmp eax, ebx + jne .error + ret +.error: + println "Error while parsing start section: Section size is incorrect" + jmp parse_error + + +parse_element_sec: + call leb128_decode_u32 + println "" + println "Section 9: Element (%d bytes)", eax + add eax, ebx + push eax + call leb128_decode_u32 + println " Vector of Elem (Length: %d)", eax + mov edi, eax +.loop: + test edi, edi + jz .done + call parse_elem + dec edi + jmp .loop +.done: + pop esi + cmp ebx, esi + jne .error + ret +.error: + println "Error while parsing element section: Section size is incorrect, supposed to end at 0x%x but ended at 0x%x", ebx, esi + jmp parse_error + + +parse_elem: + call leb128_decode_u32 + println " tableidx: %d", eax + println " offset" + call parse_const_expr + print " vector of funcidx: " + call leb128_decode_u32 + push edi + mov edi, eax +.loop: + test edi, edi + jz .done + call leb128_decode_u32 + print " %d ", eax + dec edi + jmp .loop +.done: + pop edi + println "" + ret + + +parse_code_sec: + call leb128_decode_u32 + println "" + println "Section 10: Code (%d bytes) - Skipping", eax + add ebx, eax + ret + + +parse_data_sec: + call leb128_decode_u32 + println "" + println "Section 11: Data (%d bytes)", eax + add eax, ebx + push eax + call leb128_decode_u32 + println " Vector of Data (Length: %d)", eax + mov edi, eax +.loop: + test edi, edi + jz .done + call parse_data + dec edi + jmp .loop +.done: + pop esi + cmp ebx, esi + jne .error + ret +.error: + println "Error while parsing Data section: Section size is incorrect" + jmp parse_error + + +parse_data: + call leb128_decode_u32 + println " memidx: %d", eax + call parse_const_expr + print " vector of bytes:" + call leb128_decode_u32 + push edi + mov edi, eax +.loop: + test edi, edi + jz .done + movzx esi, byte [ebx] + advance + print " 0x%x", esi + dec edi + jmp .loop +.done: + pop edi + println "" + ret + +; ----------------------------------------------------------------- +; expression parsing +; parse wasm instructions +; ------------------------------------------------------------------- +parse_op_simple: + movzx eax, byte [ebx] + advance + println " %s ", dword [opcode_str_table + eax * 4] + ret + +parse_op_u32: + movzx esi, byte [ebx] + advance + call leb128_decode_u32 + println " %s %d", dword [opcode_str_table + esi * 4], eax + ret + +parse_op_memarg: + push edi + movzx esi, byte [ebx] + advance + call leb128_decode_u32 + mov edi, eax + call leb128_decode_u32 + println "%s align=%d offset=%d", dword [opcode_str_table + esi * 4], edi, eax + pop edi + ret + +parse_blocktype: + cmp byte [ebx], 0x40 + je .exit + print " (result " + call valtype_to_str + test eax, eax + jne .error + print ")" +.exit: + advance + println "" + ret +.error: + println "Error: Invalid valtype type while parsing blocktype" + jmp parse_error + +parse_op_block: + movzx esi, byte [ebx] + advance + print " %s ", dword [opcode_str_table + esi * 4] + call parse_blocktype +.instr: + jmp parse_expr +.error: + println "An error occurred while parsing %s expression", dword [opcode_str_table + esi * 4] + jmp parse_error + + +parse_op_if: + push edi + movzx esi, byte [ebx] + advance + print " %s ", dword [opcode_str_table + esi * 4] + call parse_blocktype + mov edi, 0x0b + mov esi, 0x05 +.loop: + movzx eax, byte[ebx] + cmp eax ,edi + je .done + cmp eax, esi + je .else + call dword [opcode_parse_table + eax * 4] + jmp .loop +.else: + advance + println "" + println "else" + +@@: + movzx eax, byte [ebx] + advance + cmp eax, edi + je .done + call dword [opcode_parse_table + eax * 4] + jmp @b +.done: + advance + pop edi + println "end" + ret + +parse_op_br_table: + movzx esi, byte [ebx] + advance + print " %s ", dword [opcode_str_table + esi * 4] + call leb128_decode_u32 + push edi + mov edi, eax +.loop: + test edi, edi + jz .done + call leb128_decode_u32 + print " %d", eax + dec edi +.done: + call leb128_decode_u32 + println " labelidx: %d", eax + pop edi + ret + + +parse_call_indirect: + movzx esi, byte [ebx] + advance + call leb128_decode_u32 + println " %s (%d) " , dword [opcode_str_table + esi * 4], eax + movzx eax, byte [ebx] + advance + cmp eax, 0 + jne .error + ret +.error: + println "Error while parsing call_indirect, expected 0x00, but got 0x%x", eax + jmp parse_error + +parse_mem_inst: + movzx esi, byte [ebx] + advance + println "%s", dword [opcode_str_table + esi * 4] + movzx eax, byte[ebx] + advance + test eax, eax + jnz .error + ret + +.error: + println "Error while parsing memory instruction (%s): expected 0x00, but got 0x%x", dword [opcode_str_table + esi * 4], eax + jmp parse_error + + +parse_op_f64: + movzx esi, byte [ebx] + advance + mov eax, [buf_end] + sub eax, ebx + cmp eax, 8 + jl .error + print " %s ", dword [opcode_str_table + esi * 4] + println "%lf", dword [ebx], dword [ebx + 4] ; argument are pushed in reversed order + add ebx, 8 + ret +.error: + println "Error: Incomplete binary for f64" + jmp parse_error + + +parse_op_f32: + movzx esi, byte [ebx] + advance + mov eax, [buf_end] + sub eax, ebx + cmp eax, 4 + jl .error + movss xmm0, dword [ebx] + add ebx, 4 + cvtss2sd xmm0, xmm0 + sub esp, 8 + movsd [esp], xmm0 + pop eax + pop edx + print "%s ", dword [opcode_str_table + esi * 4] + println "%lf", edx, eax + ret +.error: + println "Error: Incomplete binary for f32" + jmp parse_error + + +parse_expr: + movzx esi, byte [ebx] ; read but don't advance so handler can handle their opcode themselves + cmp esi, 0x0B + je .done + call dword [opcode_parse_table + esi * 4] + jmp parse_expr +.done: + advance ; advance the end byte + ret + +parse_const_expr: + movzx esi, byte [ebx] + cmp esi, 0x0B + je .error_empty ; empty const expr is invalid + cmp esi, OP_GLOBAL_GET + je .dispatch + cmp esi, OP_I32_CONST + jl .error + cmp esi, OP_F64_CONST + jg .error +.dispatch: + call dword [opcode_parse_table + esi * 4] + movzx esi, byte [ebx] + cmp esi, 0x0B + jne .error_multiple + advance + ret +.error_empty: + println "Error: empty constant expression" + jmp parse_error +.error_multiple: + println "Error: multiple instructions in constant expression" + jmp parse_error +.error: + println "Error: invalid instruction in constant expression (0x%x)", esi + jmp parse_error + +parse_op_i32: + movzx esi, byte [ebx] + advance + call leb128_decode_s32 + println "%s %d", dword [opcode_str_table + esi * 4], eax + ret + +parse_op_i64: + ret + +parse_error: + println "Error occured while parsing" + mov ebp, [parse_saved_ebp] + mov esp, [parse_saved_esp] + ret diff --git a/programs/develop/wasm/src/kolibrios/kolibrios_main.asm b/programs/develop/wasm/src/kolibrios/kolibrios_main.asm new file mode 100644 index 000000000..b7a0c9653 --- /dev/null +++ b/programs/develop/wasm/src/kolibrios/kolibrios_main.asm @@ -0,0 +1,117 @@ +; SPDX-License-Identifier: GPL-2.0-only +; Reshare - Shared Resources Daemon +; +; Copyright (C) 2026 KolibriOS Team + +format binary as "" + +use32 +org 0 + +db 'MENUET01' +dd 1 +dd START +dd I_END +dd MEM +dd STACKTOP +dd parameters +dd 00 + +include 'wasm_kolibrios_interface.inc' +include '../core/wasm_parser.inc' + +START: + mcall 68, 11 + stdcall dll.Load, @IMPORT + or eax, eax + + jnz .exit + + cmp byte[parameters], 0 + je .no_file + + ; get file details + mov eax, 70 + mov dword [file_info_struct], 5 + + mov dword [file_info_struct + 16], ddib_block + mov dword [file_info_struct +21], parameters + mov ebx, file_info_struct + mcall + test eax, eax + jnz .file_details_error + ; get size (hopefully no wasm file doesn't exceed 4gb) + mov ecx, dword [ddib_block + 32] + mov [file_siz], ecx + ; println "Size gotten for file: %s is %d", parameters, ecx + mov ebx, 12 + mov eax, 68 + mcall + + + mov [file_ptr], eax + + mov eax, 70 + mov ebx, [file_ptr] + mov dword [file_info_struct], 0 + mov dword [file_info_struct + 4], 0 + mov dword [file_info_struct + 8], 0 + mov ecx, dword [file_siz] + mov dword [file_info_struct + 12], ecx + mov dword [file_info_struct + 16], ebx + mov dword [file_info_struct + 20], 0 + mov dword [file_info_struct + 21], parameters + mov ebx, file_info_struct + mcall + + test eax, eax + jne .file_read_error + + mov eax, [file_ptr] + mov ebx, dword [file_siz] + ; println "Passing ptr: 0x0x, and size: %d to wasm_parse", eax, ebx + call wasm_parse + mov ebx, 13 + mov eax, 68 + mov ecx, [file_ptr] + mcall + jmp .exit + +.no_file: + println "Usage: wasm_dis " + jmp .exit +.file_details_error: + println "An error occurred while getting details for file: %s", parameters + jmp .exit + +.file_read_error: + println "An error occured while reading file: %s", parameters + +.exit: + print "Press any key to exit" + invoke con_getc + invoke con_exit, 1 + mov eax, -1 + mcall +I_END: + +file_info_struct: + .fn dd 0 + .offset dd 0 + .offset2 dd 0 + .size dd 0 + .ptr dd 0 + .ecd db 0 + .path dd 0 + +file_ptr dd ? +file_siz dd ? + + rb 131072 ; reserve 128kb +align 16 + +STACKTOP: + +parameters rb 1024 +ddib_block rb 560 ; 40 bytes + at most 520 for bytes +MEM: diff --git a/programs/develop/wasm/src/kolibrios/wasm_kolibrios_interface.inc b/programs/develop/wasm/src/kolibrios/wasm_kolibrios_interface.inc new file mode 100644 index 000000000..72ec6c43c --- /dev/null +++ b/programs/develop/wasm/src/kolibrios/wasm_kolibrios_interface.inc @@ -0,0 +1,65 @@ +; SPDX-License-Identifier: GPL-2.0-only +; Reshare - Shared Resources Daemon +; +; Copyright (C) 2026 KolibriOS Team + + +include '../../../../proc32.inc' +include '../../../../macros.inc' +include '../../../../dll.inc' +include '../../../../string.inc' + +align 16 +@IMPORT: +library terminal, 'console.obj' + +import terminal, \ + con_init, 'con_init', \ + con_exit, 'con_exit', \ + con_printf, 'con_printf', \ + con_getc, 'con_getch' + +macro print str, [args]{ +common + pusha + local ..s, ..count, ..skip + ..count = 0 + jmp ..skip + ..s db str, 0 + +..skip: +reverse +match any, args \{ + push args + ..count = ..count + 1 +\} + +common + push ..s + call [con_printf] + add esp, 4 + (..count * 4) + popa +} + + +macro println str, [args]{ +common + pusha + local ..s, ..skip, ..count + ..count = 0 + jmp ..skip + ..s db str, 10, 0 +..skip: + +reverse +match any, args \{ + push args + ..count = ..count + 1 +\} +common + push ..s + call [con_printf] + add esp, 4 + (..count * 4) + popa +} + diff --git a/programs/develop/wasm/tests/ekun.wasm b/programs/develop/wasm/tests/ekun.wasm new file mode 100755 index 0000000000000000000000000000000000000000..12fb7a890675d2723779285e0c0b52950d8b08d2 GIT binary patch literal 370703 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≤M|_RA=& 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 HGx`4kB$YK< literal 0 HcmV?d00001 diff --git a/programs/develop/wasm/tests/simple.wasm b/programs/develop/wasm/tests/simple.wasm new file mode 100644 index 0000000000000000000000000000000000000000..2c98aa0da1cef0ccf9c511b0a9faeb48075ab9e7 GIT binary patch literal 346 zcmXYru};G<6h)t%v`N!Qfj@W_OHtKI5mLp9fSHMbDLAQ#LLH~F9Ym)@EG!J{`~ngy z|H97@2c~=Pd3skDxTy&Mkk`KNf!x!sBOU#6fqFtcC0QmbCAiLNQ8)TP0sgVEyx3*? zrczdDuOr^e*Z|SbsCOjlP6pQlqZdcaLyF#x`RF5TXgmnn&=CCvjoIW+rZ~Z=WPwW| z8*d?-VTd!yA`CEkWOJM+bNFzr!7yuAsgj0oE>iHpSB