/// <summary> /// Generates disassembled instructions from the 32-bit integers in the object file. /// </summary> /// <param name="textElems">The binary .text segment.</param> /// <returns>An IEnumerable of disassembled instructions.</returns> public IEnumerable <DisassembledInstruction> ParseTextSegment(IEnumerable <int> textElems) { var instructionList = new List <DisassembledInstruction>(); foreach (int elem in textElems) { InstructionType iType = GetInstructionType(elem); IParameterDecoder paramDecoder = ParamDecoderTable.GetDecoderFor(iType); IEnumerable <int> parameters = paramDecoder.DecodeParameters(elem); instructionList.Add(new DisassembledInstruction(elem, iType, parameters)); } return(instructionList); }
/// <summary> /// Function called to convert property values to string. If no converter is /// specified, then .ToString is called. /// </summary> /// <param name="apiField">API field attribute</param> /// <param name="propertyType">property type information</param> /// <param name="value">current value</param> /// <returns>converted value</returns> private string ConvertPropertyValue(ApiField apiField, Type propertyType, object value) { string convertedValue = null; bool isConverted = false; if (apiField.Converter != null) { IParameterDecoder converter = Activator.CreateInstance(apiField.Converter) as IParameterDecoder; if (converter != null && converter.CanConvert(propertyType)) { convertedValue = converter.Convert(value); isConverted = true; } } if (!isConverted) { convertedValue = value.ToString(); } return(convertedValue); }