diff --git a/asm.js b/asm.js index 7db3575..9fce033 100644 --- a/asm.js +++ b/asm.js @@ -531,8 +531,7 @@ class Parser { const value = this.integer(token) ?? console.error( `ERROR: Unexpected token ${token} in .global: expected` + " initial value"); - const const_opcode = const_opcodes[this.global.type]; - this.global.init = [ const_opcode, value, opcodes["end"] ]; + this.global.init = value; const action = { type: Action.GLOBAL, global: { [this.global_name]: this.global } @@ -1222,8 +1221,13 @@ export class Assembler { const globals = Object.values(this.globals); if (globals.length == 0) return null; - const contents = globals.map( - ({ type, init }) => [ type, 1, ...init ]); + const contents = globals.map(({ type, init }) => [ + type, + 1, + const_opcodes[type], + ...this.leb128(init), + opcodes["end"], + ]); return [ globals.length ].concat(...contents); }