Example #1
0
        /// <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);
        }
Example #2
0
        /// <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);
        }