From fdae17606251ceccc7369b93be1a3a8c1cfc4cbd Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Sun, 14 Jun 2020 22:38:36 -0500 Subject: [PATCH] Generating an actual WASM binary! No code section right now however; still lots of work to do. --- include/bh.h | 48 +++++++++++- include/onyxwasm.h | 16 +++- onyx | Bin 128608 -> 136304 bytes progs/minimal.onyx | 2 + src/onyx.c | 4 +- src/onyxwasm.c | 183 +++++++++++++++++++++++++++++++++++++++++++-- 6 files changed, 240 insertions(+), 13 deletions(-) diff --git a/include/bh.h b/include/bh.h index a0a33c90..9d6ea6d0 100644 --- a/include/bh.h +++ b/include/bh.h @@ -26,6 +26,8 @@ typedef int64_t i64; typedef int64_t isize; typedef i32 b32; typedef void* ptr; +typedef float f32; +typedef double f64; @@ -110,7 +112,8 @@ inline i64 chars_match(char* ptr1, char* ptr2) { // Converts an unsigned integer to the unsigned LEB128 format u8* uint_to_uleb128(u64 n, i32* output_length); u8* int_to_leb128(i64 n, i32* output_length); - +u8* float_to_ieee754(f32 f); +u8* double_to_ieee754(f64 f); @@ -436,6 +439,7 @@ typedef struct bh_buffer { #endif void bh_buffer_init(bh_buffer* buffer, bh_allocator alloc, i32 length); +void bh_buffer_free(bh_buffer* buffer); void bh_buffer_grow(bh_buffer* buffer, i32 length); void bh_buffer_append(bh_buffer* buffer, const void * data, i32 length); void bh_buffer_concat(bh_buffer* buffer, bh_buffer other); @@ -924,6 +928,42 @@ u8* int_to_leb128(i64 n, i32* output_length) { return buffer; } +// NOTE: This assumes the underlying implementation of float on the host +// system is already IEEE-754. This is safe to assume in most cases. +u8* float_to_ieee754(f32 f) { + static u8 buffer[4]; + + u8* fmem = (u8*) &f; + buffer[0] = fmem[3]; + buffer[1] = fmem[2]; + buffer[2] = fmem[1]; + buffer[3] = fmem[0]; + + return buffer; +} + +u8* double_to_ieee754(f64 f) { + static u8 buffer[8]; + + u8* fmem = (u8*) &f; + buffer[0] = fmem[7]; + buffer[1] = fmem[6]; + buffer[2] = fmem[5]; + buffer[3] = fmem[4]; + buffer[4] = fmem[3]; + buffer[5] = fmem[2]; + buffer[6] = fmem[1]; + buffer[7] = fmem[0]; + + return buffer; +} + + + + + + + @@ -1395,6 +1435,12 @@ void bh_buffer_init(bh_buffer* buffer, bh_allocator alloc, i32 init_size) { buffer->data = bh_alloc(alloc, init_size); } +void bh_buffer_free(bh_buffer* buffer) { + bh_free(buffer->allocator, buffer->data); + buffer->length = 0; + buffer->capacity = 0; +} + void bh_buffer_grow(bh_buffer* buffer, i32 length) { if (buffer == NULL) return; diff --git a/include/onyxwasm.h b/include/onyxwasm.h index 17f35599..4f7cf685 100644 --- a/include/onyxwasm.h +++ b/include/onyxwasm.h @@ -237,17 +237,24 @@ typedef struct WasmInstruction { WasmInstructionData data; } WasmInstruction; +typedef struct WasmFuncLocals { + u8 i32_count; + u8 i64_count; + u8 f32_count; + u8 f64_count; +} WasmFuncLocals; typedef struct WasmFunc { i32 type_idx; + WasmFuncLocals locals; bh_arr(WasmInstruction) code; } WasmFunc; typedef enum WasmExportKind { - WASM_EXPORT_FUNCTION, - WASM_EXPORT_TABLE, - WASM_EXPORT_MEMORY, - WASM_EXPORT_GLOBAL, + WASM_EXPORT_FUNCTION = 0x00, + WASM_EXPORT_TABLE = 0x01, + WASM_EXPORT_MEMORY = 0x02, + WASM_EXPORT_GLOBAL = 0x03, } WasmExportKind; typedef struct WasmExport { @@ -273,6 +280,7 @@ typedef struct OnyxWasmModule { i32 next_func_idx; bh_hash(WasmExport) exports; + i32 export_count; } OnyxWasmModule; OnyxWasmModule onyx_wasm_generate_module(bh_allocator alloc, OnyxAstNode* program); diff --git a/onyx b/onyx index ad0674531f06f9a329c80daa897e65112079d6a3..eb95d4a86bb1df2067243c148fd329359f830082 100755 GIT binary patch literal 136304 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 E0oMH>MgRZ+ literal 128608 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
R~2ehUbxs)FpnyR3}+N2_Kl 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 diff --git a/progs/minimal.onyx b/progs/minimal.onyx index 215f6fdf..1f1f75f5 100644 --- a/progs/minimal.onyx +++ b/progs/minimal.onyx @@ -18,3 +18,5 @@ export diff_square :: proc (a i32, b i32) -> i64 { return (c * d) as i64; } + +export dummy :: proc () -> void { } diff --git a/src/onyx.c b/src/onyx.c index 5e4ec5b7..2c5e9d2b 100644 --- a/src/onyx.c +++ b/src/onyx.c @@ -62,7 +62,7 @@ int main(int argc, char *argv[]) { OnyxWasmModule wasm_mod = onyx_wasm_generate_module(alloc, program); -#if 0 +#if 1 // NOTE: Ensure type table made correctly bh_printf("Type map:\n"); @@ -83,7 +83,7 @@ int main(int argc, char *argv[]) { } #endif -#if 0 +#if 1 // NOTE: Ensure the export table was built correctly bh_printf("Function types:\n"); diff --git a/src/onyxwasm.c b/src/onyxwasm.c index ccf87dff..b719acbe 100644 --- a/src/onyxwasm.c +++ b/src/onyxwasm.c @@ -3,16 +3,18 @@ // NOTE: Allows easier testing of types since most of the characters // corresponding to these values are not printable -#if 0 +#if 1 const WasmType WASM_TYPE_INT32 = 0x7F; const WasmType WASM_TYPE_INT64 = 0x7E; const WasmType WASM_TYPE_FLOAT32 = 0x7D; const WasmType WASM_TYPE_FLOAT64 = 0x7C; +const WasmType WASM_TYPE_VOID = 0x00; #else const WasmType WASM_TYPE_INT32 = 'A'; const WasmType WASM_TYPE_INT64 = 'B'; const WasmType WASM_TYPE_FLOAT32 = 'C'; const WasmType WASM_TYPE_FLOAT64 = 'D'; +const WasmType WASM_TYPE_VOID = '\0'; #endif static const char* wi_string(WasmInstructionType wit) { @@ -204,7 +206,7 @@ static WasmType onyx_type_to_wasm_type(OnyxTypeInfo* type) { } // TODO: Should produce an error message if this isn't successful - return WASM_TYPE_INT32; + return WASM_TYPE_VOID; } static void process_function_body(OnyxWasmModule* mod, WasmFunc* func, OnyxAstNodeFuncDef* fd); @@ -222,6 +224,8 @@ static void process_function_body(OnyxWasmModule* mod, WasmFunc* func, OnyxAstNo forll (OnyxAstNode, stmt, fd->body->body, next) { process_statement(mod, func, stmt); } + + bh_arr_push(func->code, ((WasmInstruction){ WI_BLOCK_END, 0x00 })); } static void process_block(OnyxWasmModule* mod, WasmFunc* func, OnyxAstNodeBlock* block) { @@ -265,7 +269,9 @@ static void process_assignment(OnyxWasmModule* mod, WasmFunc* func, OnyxAstNode* { \ WasmInstructionType instr_type; \ switch (expr->type->kind) { \ + case ONYX_TYPE_INFO_KIND_UINT32: \ case ONYX_TYPE_INFO_KIND_INT32: instr_type = WI_I32_##wasm_binop; break; \ + case ONYX_TYPE_INFO_KIND_UINT64: \ case ONYX_TYPE_INFO_KIND_INT64: instr_type = WI_I64_##wasm_binop; break; \ case ONYX_TYPE_INFO_KIND_FLOAT32: instr_type = WI_F32_##wasm_binop; break; \ case ONYX_TYPE_INFO_KIND_FLOAT64: instr_type = WI_F64_##wasm_binop; break; \ @@ -288,10 +294,12 @@ static void process_expression(OnyxWasmModule* mod, WasmFunc* func, OnyxAstNode* { WasmInstructionType instr_type; switch (expr->type->kind) { + case ONYX_TYPE_INFO_KIND_UINT32: case ONYX_TYPE_INFO_KIND_INT32: if (expr->type->is_unsigned) instr_type = WI_I32_DIV_U; else instr_type = WI_I32_DIV_S; break; + case ONYX_TYPE_INFO_KIND_UINT64: case ONYX_TYPE_INFO_KIND_INT64: if (expr->type->is_unsigned) instr_type = WI_I64_DIV_U; else instr_type = WI_I64_DIV_S; @@ -463,6 +471,7 @@ static void process_function_definition(OnyxWasmModule* mod, OnyxAstNodeFuncDef* .idx = func_idx, }; bh_hash_put(WasmExport, mod->exports, fd->token->token, wasm_export); + mod->export_count++; onyx_token_null_toggle(*fd->token); } @@ -513,6 +522,7 @@ OnyxWasmModule onyx_wasm_generate_module(bh_allocator alloc, OnyxAstNode* progra .next_func_idx = 0, .exports = NULL, + .export_count = 0, }; bh_arr_new(alloc, module.functypes, 4); @@ -545,19 +555,180 @@ void onyx_wasm_module_free(OnyxWasmModule* module) { bh_hash_free(module->exports); } + + + +//------------------------------------------------- +// BINARY OUPUT +//------------------------------------------------- + +#define WASM_SECTION_ID_TYPE 1 +#define WASM_SECTION_ID_IMPORT 2 +#define WASM_SECTION_ID_FUNCTION 3 +#define WASM_SECTION_ID_TABLE 4 +#define WASM_SECTION_ID_MEMORY 5 +#define WASM_SECTION_ID_GLOBAL 6 +#define WASM_SECTION_ID_EXPORT 7 +#define WASM_SECTION_ID_START 8 +#define WASM_SECTION_ID_ELEMENT 9 +#define WASM_SECTION_ID_CODE 10 +#define WASM_SECTION_ID_DATA 11 + +typedef i32 vector_func(void*, bh_buffer*); + static const u8 WASM_MAGIC_STRING[] = { 0x00, 0x61, 0x73, 0x6D }; static const u8 WASM_VERSION[] = { 0x01, 0x00, 0x00, 0x00 }; +static i32 output_vector(void** arr, i32 stride, i32 arrlen, vector_func elem, bh_buffer* vec_buff) { + i32 len; + u8* leb = uint_to_uleb128((u64) arrlen, &len); + bh_buffer_append(vec_buff, leb, len); + + i32 i = 0; + while (i < arrlen) { + elem(*arr, vec_buff); + arr = bh_pointer_add(arr, stride); + i++; + } + + return vec_buff->length; +} + +static i32 output_functype(WasmFuncType* type, bh_buffer* buff) { + i32 prev_len = buff->length; + + bh_buffer_write_byte(buff, 0x60); + + i32 len; + u8* leb_buff = uint_to_uleb128(type->param_count, &len); + bh_buffer_append(buff, leb_buff, len); + bh_buffer_append(buff, type->param_types, type->param_count); + + if (type->return_type != WASM_TYPE_VOID) { + bh_buffer_write_byte(buff, 0x01); + bh_buffer_write_byte(buff, type->return_type); + } else { + bh_buffer_write_byte(buff, 0x00); + } + + return buff->length - prev_len; +} + +static i32 output_typesection(OnyxWasmModule* module, bh_buffer* buff) { + i32 prev_len = buff->length; + bh_buffer_write_byte(buff, 0x01); + + bh_buffer vec_buff; + bh_buffer_init(&vec_buff, buff->allocator, 128); + + i32 vec_len = output_vector( + (void**) module->functypes, + sizeof(WasmFuncType*), + bh_arr_length(module->functypes), + (vector_func *) output_functype, + &vec_buff); + + i32 leb_len; + u8* leb = uint_to_uleb128((u64) vec_len, &leb_len); + bh_buffer_append(buff, leb, leb_len); + + bh_buffer_concat(buff, vec_buff); + bh_buffer_free(&vec_buff); + + return buff->length - prev_len; +} + +static i32 output_funcsection(OnyxWasmModule* module, bh_buffer* buff) { + i32 prev_len = buff->length; + bh_buffer_write_byte(buff, WASM_SECTION_ID_FUNCTION); + + bh_buffer vec_buff; + bh_buffer_init(&vec_buff, buff->allocator, 128); + + i32 leb_len; + u8* leb = uint_to_uleb128((u64) (bh_arr_length(module->funcs)), &leb_len); + bh_buffer_append(&vec_buff, leb, leb_len); + + bh_arr_each(WasmFunc, func, module->funcs) { + leb = uint_to_uleb128((u64) (func->type_idx), &leb_len); + bh_buffer_append(&vec_buff, leb, leb_len); + } + + leb = uint_to_uleb128((u64) (vec_buff.length), &leb_len); + bh_buffer_append(buff, leb, leb_len); + + bh_buffer_concat(buff, vec_buff); + bh_buffer_free(&vec_buff); + + return buff->length - prev_len; +} + +static i32 output_exportsection(OnyxWasmModule* module, bh_buffer* buff) { + i32 prev_len = buff->length; + bh_buffer_write_byte(buff, WASM_SECTION_ID_EXPORT); + + bh_buffer vec_buff; + bh_buffer_init(&vec_buff, buff->allocator, 128); + + i32 leb_len; + u8* leb = uint_to_uleb128((u64) (module->export_count), &leb_len); + bh_buffer_append(&vec_buff, leb, leb_len); + + i32 key_len = 0; + bh_hash_each_start(WasmExport, module->exports); + key_len = strlen(key); + leb = uint_to_uleb128((u64) key_len, &leb_len); + bh_buffer_append(&vec_buff, leb, leb_len); + bh_buffer_append(&vec_buff, key, key_len); + + bh_buffer_write_byte(&vec_buff, (u8) (value.kind)); + leb = uint_to_uleb128((u64) value.idx, &leb_len); + bh_buffer_append(&vec_buff, leb, leb_len); + bh_hash_each_end; + + leb = uint_to_uleb128((u64) (vec_buff.length), &leb_len); + bh_buffer_append(buff, leb, leb_len); + + bh_buffer_concat(buff, vec_buff); + bh_buffer_free(&vec_buff); + + return buff->length - prev_len; +} + +static i32 output_codesection(OnyxWasmModule* module, bh_buffer* buff) { + i32 prev_len = buff->length; + + bh_buffer_write_byte(buff, WASM_SECTION_ID_CODE); + + bh_buffer vec_buff; + bh_buffer_init(&vec_buff, buff->allocator, 128); + + i32 leb_len; + u8* leb = uint_to_uleb128((u64) bh_arr_length(module->funcs), &leb_len); + bh_buffer_append(&vec_buff, leb, leb_len); + + bh_arr_each(WasmFunc, func, module->funcs) { + } + + leb = uint_to_uleb128((u64) (vec_buff.length), &leb_len); + bh_buffer_append(buff, leb, leb_len); + + bh_buffer_concat(buff, vec_buff); + bh_buffer_free(&vec_buff); + + return buff->length - prev_len; +} + void onyx_wasm_module_write_to_file(OnyxWasmModule* module, bh_file file) { bh_buffer master_buffer; bh_buffer_init(&master_buffer, bh_heap_allocator(), 128); bh_buffer_append(&master_buffer, WASM_MAGIC_STRING, 4); bh_buffer_append(&master_buffer, WASM_VERSION, 4); - - - - + output_typesection(module, &master_buffer); + output_funcsection(module, &master_buffer); + output_exportsection(module, &master_buffer); + output_codesection(module, &master_buffer); bh_file_write(&file, master_buffer.data, master_buffer.length); -- 2.25.1