WriteByte() публичный Метод

public WriteByte ( byte value ) : void
value byte
Результат void
Пример #1
0
        private void CreateTypeDefinitionTable(RuntimeType type, string assemblySymbol)
        {
            string typeNameSymbol = type + @"$tname";

            // Emit type name
            using (Stream stream = linker.Allocate(typeNameSymbol, SectionKind.ROData, 0, typeLayout.NativePointerAlignment))
            {
                using (EndianAwareBinaryWriter writer = new EndianAwareBinaryWriter(stream, architecture.IsLittleEndian))
                {
                    EmitStringWithLength(writer, type.FullName);
                }
            }

            string typeTableSymbol = type.FullName + @"$dtable";

            using (Stream stream = linker.Allocate(typeTableSymbol, SectionKind.ROData, 0, typeLayout.NativePointerAlignment))
            {
                using (EndianAwareBinaryWriter writer = new EndianAwareBinaryWriter(stream, architecture.IsLittleEndian))
                {
                    // 1. Size
                    writer.Write((uint)typeLayout.GetTypeSize(type));

                    // 2. Metadata Token
                    writer.Write((uint)type.Token.ToUInt32());

                    // 3. Pointer to Name
                    linker.Link(LinkType.AbsoluteAddress | LinkType.NativeI4, typeTableSymbol, (int)writer.Position, 0, typeNameSymbol, IntPtr.Zero);
                    writer.Position += typeLayout.NativePointerSize;

                    // 4. Pointer to Assembly Definition
                    linker.Link(LinkType.AbsoluteAddress | LinkType.NativeI4, typeTableSymbol, (int)writer.Position, 0, assemblySymbol, IntPtr.Zero);
                    writer.Position += typeLayout.NativePointerSize;

                    // 5. TODO: Constructor that accept no parameters, if any, for this type
                    writer.WriteZeroBytes(typeLayout.NativePointerSize);

                    // 6. Flag: IsInterface
                    writer.WriteByte((byte)(type.IsInterface ? 1 : 0));
                }
            }
        }
Пример #2
0
        private void CreateTypeDefinitionTable(MosaType type)
        {
            string typeNameSymbol = type + @"$tname";

            // Emit type name
            using (Stream stream = Linker.Allocate(typeNameSymbol, SectionKind.ROData, 0, TypeLayout.NativePointerAlignment))
            {
                using (EndianAwareBinaryWriter writer = new EndianAwareBinaryWriter(stream, Architecture.Endianness))
                {
                    EmitStringWithLength(writer, type.FullName);
                }
            }

            string typeTableSymbol = type.FullName + @"$dtable";

            using (Stream stream = Linker.Allocate(typeTableSymbol, SectionKind.ROData, 0, TypeLayout.NativePointerAlignment))
            {
                using (EndianAwareBinaryWriter writer = new EndianAwareBinaryWriter(stream, Architecture.Endianness))
                {
                    // 1. Size
                    writer.Write((uint)TypeLayout.GetTypeSize(type));

                    // 2. Metadata Token
                    //writer.Write((uint)type.Token.ToUInt32());
                    writer.Write((uint)0); //FIXME! ^^^

                    // 3. Pointer to Name
                    Linker.Link(LinkType.AbsoluteAddress | LinkType.I4, BuiltInPatch.I4, typeTableSymbol, (int)writer.Position, 0, typeNameSymbol, 0);
                    writer.Position += TypeLayout.NativePointerSize;

                    // 4. Pointer to Assembly Definition
                    //linker.Link(LinkType.AbsoluteAddress | LinkType.I4, BuiltInPatch.I4, typeTableSymbol, (int)writer.Position, 0, assemblySymbol, 0);
                    writer.Position += TypeLayout.NativePointerSize;

                    // 5. TODO: Constructor that accepts no parameters, if any, for this type
                    writer.WriteZeroBytes(TypeLayout.NativePointerSize);

                    // 6. Flag: IsInterface
                    writer.WriteByte((byte)(type.IsInterface ? 1 : 0));
                }
            }

            CreateFieldDefinitions(type);
        }