• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            歲月流轉,往昔空明

            C++博客 首頁 新隨筆 聯系 聚合 管理
              118 Posts :: 3 Stories :: 413 Comments :: 0 Trackbacks

            Syntax of SASL Symbol Name Mangling

            September 26

            2010

            This script describes the rules of symbol name mangling.

            V1.0

            SASL Name Mangling Syntax

            V1.0

            Name mangling can be applied to name of function mainly, for distinguishing the overloaded function

            MangledName is the result of Name Mangling. It starts with ‘M’ character and ends with ‘Z’ character.

            MangledName ::= ‘M’ QualifiedName ‘@@’ ParameterTypes CallingConvention

            QualifiedName is base name qualified by scope name. A scope name could be a structure name, class name or namespace name.

            ParameterTypes describes the types of parameter list.

            ‘@@’ is the splitter between qualified name and parameter type.

            QualifiedName ::= ( ScopeName ‘@’ )* BaseName

            QualifiedName is composited by scope name and base name. ‘@’ is used to split the scope segments.

            ScopeName ::=

            ‘S’ StructTypeName

            ‘N’ NamespaceName

            StructTypeName ::= <name of structure>

            NamespaceName ::= <name of namespace>

            BaseName ::= <literal name of function>

            ScopeName are two sorts, structure name or namespace name. Sorts are distinguished by a lead character. If the name starts with ‘S’ it means the name of structure, and ‘N’ means following name represents a namespace. Note that, if

            BaseName is the literal name of the function or a type.

            ParameterTypes is a list of parameter types. Because SASL do not support variance parameters, so we need not to considerate that. Syntax of ParameterTypes as following:

            ParameterTypes ::= ( ParameterType ‘@@’)*

            ParameterType is encoded by type qualifiers and type name.

            NOTE THAT, anywhere type name referred means that the original definition name but not alias( such as generated by “typedef” ).

            ParameterType ::= ScopeQualifiedTypeName

            ScopeQualifiedTypeName is the type name qualified by scopes. It is similar with qualified name.

            ScopeQualifiedTypeName ::= ( ScopeName ‘@’ )* BaseTypeName

            ScopeName ::= ( ‘S’ StructTypeName ) | ( ‘N’ NamespaceName )

            QualifiedBaseTypeName ::= TypeQualifier BaseTypeName

            TypeQualifier ::= (‘C’)?(‘S’)?(‘U’)?Q

            TypeQualifier describes the qualifier of declaration. In SASL, following qualifiers are supported: constant qualifier (‘C’), uniform qualifier (‘U’) and shared qualifier (‘S’). Each qualifier is represented as a character, and qualifiers is ended by a character ‘Q’.

            BaseTypeName ::=

            ‘S’ StructTypeName

            ‘B’ BuildinScalarTypeName

            ‘V’ BuildinVectorTypeName

            ‘F’ FunctionTypeName

            ‘M’ BuildinMatrixTypeName

            ‘A’ ArraySize ArrayComponentTypeName

            StructTypeName ::= <literal name of structure>

            BuildinScalarTypeNames encode all build-in type into one or two characters.

            BuildinScalarTypeName ::=

            ‘U1’ | ‘U2’ | ‘U4’ | ‘U8’ |‘I1’ | ‘I2’ | ‘I4’ | ‘I8’ | ‘B’ | ’F’ | ‘D’ | ‘O’

            ArrayComponentTypeName ::= QualifiedBaseTypeName

            ArraySize ::=

            <length of array >

            ‘V’

            They are corresponded following building types: uint8_t, uint16_t, uint32_t, uint64_t, int8_t, int16_t, int32_t, int64_t, boolean, float, double and omit (void).

            BuildinVectorName ::= VectorLength BuildinScalarTypeName

            BuildinMatrixName ::= RowCountOfMatrix ColumnCountOfMatrix BuildinScalarTypeName

            BuildinVectorTypeName shows the name of building vector. It makes of length component and scalar type component.

            VectorLength Could be 1, 2, 3 or 4 and represents the length of vector.

            And the BuildinMatrixTypeName is similar as build-in vector type name.

            ArraySize is an integer demonstrating the size of fixed-length array or ‘V’ (void or variant) means that it is a variant length array.

            ArrayComponentTypeName is the description of type of component of array. For example, array component type of “int32_t[]” is “int32_t”. So array component type name is set to the mangled name of int32_t, “I4”.

            CallingConvention is a single character which shows the calling convention of this function. ‘S’ means “__stdcall”, ‘C’ means “__cdecl” and ‘F’ ,means “__fastcall”

            CallingConvention ::=

            ‘S’

            ‘C’

            ‘F’

            FunctionTypeName reuses all non-terminators and terminators mentioned above.

            FunctionTypeName ::= ReturnType PrarameterTypes CallConvetion ‘@@@’

            ReturnType ::= ParameterType ‘@@’

            posted on 2010-09-26 19:12 空明流轉 閱讀(1690) 評論(2)  編輯 收藏 引用

            評論

            # re: SASL Name Mangling (Release Candidate Version) 2010-09-27 09:02 ccsdu2009
            如果是你弄得 為什么要弄英文 ?  回復  更多評論
              

            # re: SASL Name Mangling (Release Candidate Version) 2010-09-27 13:28 空明流轉
            @ccsdu2009
            這是SoftArt文檔的一部分,自然選擇用英文。  回復  更多評論
              

            久久久久久毛片免费看| 久久综合九色综合久99| 久久综合给久久狠狠97色| 久久国产欧美日韩精品| 久久www免费人成看国产片| 亚洲精品高清一二区久久| 久久精品麻豆日日躁夜夜躁| 激情综合色综合久久综合| 思思久久99热免费精品6| 99久久久国产精品免费无卡顿| 国产精品欧美亚洲韩国日本久久| 久久99热这里只频精品6| 久久中文娱乐网| 久久久久波多野结衣高潮| 久久精品国产免费| 亚洲香蕉网久久综合影视| 国产精品成人久久久久久久| 亚洲中文字幕久久精品无码APP| 93精91精品国产综合久久香蕉 | 奇米综合四色77777久久| 久久久精品国产Sm最大网站| 亚洲精品无码久久一线| 久久综合视频网站| www亚洲欲色成人久久精品| 久久夜色精品国产网站| 国产精品成人久久久| 精品久久综合1区2区3区激情| 久久久噜噜噜www成人网| 人妻久久久一区二区三区| 久久久久久久久久久久久久| 思思久久99热免费精品6| 久久精品综合一区二区三区| 欧美亚洲国产精品久久蜜芽| 人妻精品久久久久中文字幕一冢本| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 色播久久人人爽人人爽人人片aV| 久久91精品久久91综合| 久久国产成人精品麻豆| 久久精品成人免费网站| 伊人久久大香线蕉精品| 久久国产成人午夜aⅴ影院 |