示例#1
0
            internal override void SaveAsWASM(BinaryWriter writer)
            {
                var module = Encoding.UTF8.GetBytes(module_str);
                var field  = Encoding.UTF8.GetBytes(field_str);

                LEB128.WriteUInt32(writer, (uint)module.Length);
                writer.Write(module);
                LEB128.WriteUInt32(writer, (uint)field.Length);
                writer.Write(field);
                writer.Write((byte)kind);

                switch (kind)
                {
                case WebAssemblyExternalKind.Function:
                    LEB128.WriteUInt32(writer, (uint)type);
                    break;

                case WebAssemblyExternalKind.Table:
                    ((TableType)type).SaveAsWASM(writer);
                    break;

                case WebAssemblyExternalKind.Memory:
                    ((MemoryType)type).SaveAsWASM(writer);
                    break;

                case WebAssemblyExternalKind.Global:
                    ((GlobalType)type).SaveAsWASM(writer);
                    break;
                }
            }
示例#2
0
 internal override void SaveAsWASM(BinaryWriter writer)
 {
     LEB128.WriteUInt32(writer, memory_index);
     offset.SaveAsWASM(writer);
     LEB128.WriteUInt32(writer, (uint)data.Length);
     writer.Write(data);
 }
示例#3
0
 internal override void SaveAsWASM(BinaryWriter writer)
 {
     base.SaveAsWASM(writer);
     LEB128.WriteUInt32(writer, (uint)entries.Length);
     foreach (var entry in entries)
     {
         entry.SaveAsWASM(writer);
     }
 }
示例#4
0
            internal override void SaveAsWASM(BinaryWriter writer)
            {
                var field = Encoding.UTF8.GetBytes(field_str);

                LEB128.WriteUInt32(writer, (uint)field.Length);
                writer.Write(field);
                writer.Write((byte)kind);
                LEB128.WriteUInt32(writer, index);
            }
示例#5
0
 internal override void SaveAsWASM(BinaryWriter writer)
 {
     LEB128.WriteUInt7(writer, (byte)(maximum != null ? 1 : 0));
     LEB128.WriteUInt32(writer, initial);
     if (maximum != null)
     {
         LEB128.WriteUInt32(writer, (uint)maximum);
     }
 }
示例#6
0
 internal override void SaveAsWASM(BinaryWriter writer)
 {
     LEB128.WriteUInt32(writer, table_index);
     offset.SaveAsWASM(writer);
     LEB128.WriteUInt32(writer, (uint)function_index.Length);
     foreach (var elem in function_index)
     {
         LEB128.WriteUInt32(writer, elem);
     }
 }
            internal override void SaveAsWASM(BinaryWriter writer)
            {
                base.SaveAsWASM(writer);

                byte[] name_bytes = Encoding.UTF8.GetBytes(name);

                LEB128.WriteUInt32(writer, (uint)name_bytes.Length);
                writer.Write(name_bytes);
                writer.Write(payload_data);
            }
示例#8
0
            internal override void SaveAsWASM(BinaryWriter writer)
            {
                uint local_count = (uint)locals.Length;
                uint body_size   = LEB128.SizeOf(local_count) + (uint)locals.Select(x => (long)x.BinarySize()).Sum() + (uint)code.Length;

                LEB128.WriteUInt32(writer, body_size);
                LEB128.WriteUInt32(writer, local_count);
                foreach (var local in locals)
                {
                    local.SaveAsWASM(writer);
                }
                writer.Write(code);
            }
示例#9
0
        public void WriteTest(MemoryStream stream)
        {
            BinaryWriter writer = new BinaryWriter(stream);

            LEB128.WriteUInt32(writer, 0xFF00FF00);
            LEB128.WriteUInt32(writer, 0xAABBAA);
            LEB128.WriteUInt32(writer, 0xCC);
            LEB128.WriteUInt7(writer, 0x11);
            LEB128.WriteUInt7(writer, 0x7F);
            LEB128.WriteInt32(writer, 0x7F00FF00);
            LEB128.WriteInt32(writer, 0xAABBAA);
            LEB128.WriteInt32(writer, 0xCC);
            LEB128.WriteInt32(writer, -1);
            LEB128.WriteInt7(writer, 0x11);
            LEB128.WriteInt7(writer, -1);
        }
示例#10
0
            internal override void SaveAsWASM(BinaryWriter writer)
            {
                LEB128.WriteInt7(writer, (sbyte)WebAssemblyType.func);
                LEB128.WriteUInt32(writer, (uint)param_types.Length);
                for (uint i = 0; i < param_types.Length; i++)
                {
                    LEB128.WriteInt7(writer, (sbyte)param_types[i]);
                }

                if (return_type != null)
                {
                    LEB128.WriteInt7(writer, 1);
                    LEB128.WriteInt7(writer, (sbyte)return_type);
                }
                else
                {
                    LEB128.WriteInt7(writer, 0);
                }
            }
示例#11
0
 internal override void SaveAsWASM(BinaryWriter writer)
 {
     base.SaveAsWASM(writer);
     LEB128.WriteUInt32(writer, index);
 }
示例#12
0
 internal override void SaveAsWASM(BinaryWriter writer)
 {
     LEB128.WriteUInt32(writer, count);
     writer.Write((byte)type);
 }