Beispiel #1
0
        public WasmFunctionState(WasmFunctionSignature signature, WasmFunctionBody body)
        {
            var locals = (uint)signature.Parameters.Count;

            foreach (var loc in body.Locals)
            {
                locals += loc.Count;
            }
            _locals = new List <WasmVariable>((int)locals);
            for (var i = 0; i < locals; i++)
            {
                _locals.Add(new WasmVariable());
            }
        }
Beispiel #2
0
        public WasmFunctionBody ReadFunctionBody()
        {
            var bodySize    = ReadVarUInt32();
            var bodyBytes   = ReadBytes(bodySize);
            var bodyReader  = new WasmReader(bodyBytes);
            var localsCount = bodyReader.ReadVarUInt32();
            var locals      = new List <WasmLocalEntry>((int)localsCount);

            for (var i = 0; i < localsCount; i++)
            {
                locals.Add(bodyReader.ReadLocalEntry());
            }
            var opcodes = new List <BaseOpcode>();

            while (!bodyReader.Eof)
            {
                opcodes.Add(bodyReader.ReadOpcode());
            }
            var res = new WasmFunctionBody(locals, opcodes);

            return(res);
        }