Esempio n. 1
0
        public static TypedNumber RegisterDefault()
        {
            var typedNumber = new TypedNumber();

            typedNumber.size    = ParameterType.size_8;
            typedNumber.value_8 = byte.MinValue;
            return(typedNumber);
        }
Esempio n. 2
0
        public static TypedNumber TypedInt(uint value)
        {
            var typedNumber = new TypedNumber();

            typedNumber.size     = ParameterType.size_32;
            typedNumber.value_32 = value;
            return(typedNumber);
        }
Esempio n. 3
0
        public static TypedNumber TypedByte(byte value)
        {
            var typedNumber = new TypedNumber();

            typedNumber.size    = ParameterType.size_8;
            typedNumber.value_8 = value;
            return(typedNumber);
        }
Esempio n. 4
0
        public static TypedNumber TypedShort(ushort value)
        {
            var typedNumber = new TypedNumber();

            typedNumber.size     = ParameterType.size_16;
            typedNumber.value_16 = value;
            return(typedNumber);
        }
Esempio n. 5
0
        public static InstructionSet Disassemble(string path)
        {
            InstructionSet instructionSet = new InstructionSet();

            using (var file = File.Open(path, FileMode.Open)) {
                using (var reader = new BeBinaryReader(file)) {
                    while (reader.BaseStream.Position != reader.BaseStream.Length)
                    {
                        byte operation       = reader.ReadByte();
                        var  parameterSchema = parameterSchemas[operation];
                        var  parameters      = new List <TypedNumber>();
                        for (var i = 0; i < parameterSchema.Length; i++)
                        {
                            var parameter = parameterSchema[i];
                            switch (parameter)
                            {
                            case ParameterType.size_8:
                                parameters.Add(TypedNumber.TypedByte(
                                                   reader.ReadByte()
                                                   ));
                                break;

                            case ParameterType.size_16:
                                parameters.Add(TypedNumber.TypedShort(
                                                   reader.ReadUInt16()
                                                   ));
                                break;

                            case ParameterType.size_32:
                                parameters.Add(TypedNumber.TypedInt(
                                                   reader.ReadUInt32()
                                                   ));
                                break;
                            }
                        }
                        instructionSet.Add(new Instruction(
                                               opcode: operation,
                                               parameters: parameters.ToArray()
                                               ));
                    }
                }
            }
            return(instructionSet);
        }