public static TypedNumber RegisterDefault() { var typedNumber = new TypedNumber(); typedNumber.size = ParameterType.size_8; typedNumber.value_8 = byte.MinValue; return(typedNumber); }
public static TypedNumber TypedInt(uint value) { var typedNumber = new TypedNumber(); typedNumber.size = ParameterType.size_32; typedNumber.value_32 = value; return(typedNumber); }
public static TypedNumber TypedByte(byte value) { var typedNumber = new TypedNumber(); typedNumber.size = ParameterType.size_8; typedNumber.value_8 = value; return(typedNumber); }
public static TypedNumber TypedShort(ushort value) { var typedNumber = new TypedNumber(); typedNumber.size = ParameterType.size_16; typedNumber.value_16 = value; return(typedNumber); }
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); }