Exemple #1
0
 /// <summary>Retrieves the canonical name for an architecture sub type</summary>
 /// <param name="subArchType">Architecture sub type</param>
 /// <returns>String name for the architecture sub type</returns>
 public static string GetCanonicalName(TripleSubArchType subArchType)
 => NativeMethods.TripleGetSubArchTypeName(( LLVMTripleSubArchType )subArchType) ?? string.Empty;
Exemple #2
0
        /// <summary>Provides the canonical Architecture form for a given architecture sub architecture pair</summary>
        /// <param name="archType">Architecture type</param>
        /// <param name="subArch">Sub Architecture type</param>
        /// <returns>Canonical <see cref="TripleArchType"/></returns>
        /// <remarks>
        /// Some architectures, particularly ARM variants, have multiple sub-architecture types that
        /// have a canonical form (i.e. Arch=<see cref="TripleArchType.Arm"/>; SubArch=<see cref="TripleSubArchType.ARMSubArch_v7m"/>;
        /// has the Canonical Arch of <see cref="TripleArchType.Thumb"/>). This method retrieves the canonical Arch
        /// for a given architecture,SubArchitecture pair.
        /// </remarks>
        public static TripleArchType GetCanonicalArchForSubArch(TripleArchType archType, TripleSubArchType subArch)
        {
            switch (archType)
            {
            case TripleArchType.Kalimba:
                switch (subArch)
                {
                case TripleSubArchType.NoSubArch:
                case TripleSubArchType.KalimbaSubArch_v3:
                case TripleSubArchType.KalimbaSubArch_v4:
                case TripleSubArchType.KalimbaSubArch_v5:
                    return(TripleArchType.Kalimba);

                default:
                    return(TripleArchType.UnknownArch);
                }

            case TripleArchType.Arm:
            case TripleArchType.Armeb:
                switch (subArch)
                {
                case TripleSubArchType.ARMSubArch_v6m:
                    return(archType == TripleArchType.Armeb ? TripleArchType.Thumbeb : TripleArchType.Thumb);

                case TripleSubArchType.KalimbaSubArch_v3:
                case TripleSubArchType.KalimbaSubArch_v4:
                case TripleSubArchType.KalimbaSubArch_v5:
                    return(TripleArchType.UnknownArch);

                default:
                    return(archType);
                }

            default:
                return(archType);
            }
        }