• <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>

            歲月流轉(zhuǎn),往昔空明

            C++博客 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
              118 Posts :: 3 Stories :: 413 Comments :: 0 Trackbacks

            對(duì)于C++一系的語(yǔ)言,Name Mangling主要用于同名函數(shù),同名類型和同名變量的重載。編譯器可以在編譯期將同名函數(shù)的不同簽名形式區(qū)分開(kāi)來(lái)。Name Mangling經(jīng)常用于以下場(chǎng)合:函數(shù)同名稱不同簽名(函數(shù)重載);跨編譯單元的變量、函數(shù)引用;動(dòng)態(tài)鏈接庫(kù)或其他形式的函數(shù)、變量導(dǎo)出。

            盡管現(xiàn)階段SASL不打算支持Member Function等比較復(fù)雜的行為,甚至?xí)簳r(shí)不考慮函數(shù)重載。但是作為現(xiàn)代語(yǔ)言編譯的基本要素,SASL在語(yǔ)義分析階段,仍然提供了較為完善的Name Mangling機(jī)制,為以后的編譯器特性擴(kuò)充打下基礎(chǔ)。

            SASL的Mangling語(yǔ)法如下:
            mangled_name = 'M' basic_name '@' return_value_type parameter_type_list '@' 'Z'
            basic_name = string '@'
            return_value_type = value_type
            parameter_type_list = ( value_type )*
            value_type = qualifier_code type_code
            qualifier_code = "UN" | "CN" | "NN" | "UC"
            type_code = buildin_typecode | struct_class_typecode | array_type_code
            buildin_typecode = dimension_code basic_type
            dimension_code = scalar | vector | matrix
            scalar = 'B'
            vector = 'V' (1|2|3|4)
            matrix = 'M' (1|2|3|4){2}
            basic_type =
              'S1' | 'U1' | 'S2' | 'U2' | 'S4' | 'U4' | 'S8' | 'U8' | 'F' | 'D' | 'V' | 'B'
            struct_class_typecode = 'S' string '@@'
            array_class_typecode = 'A' type_code size '@@'

            和主流語(yǔ)言相比,本Mangling暫時(shí)不支持Qualifier(Class Member,Namespace Qualifiers)。以后在需要Qualifier的時(shí)候再酌情添加。也就是說(shuō)暫時(shí)不會(huì)考慮現(xiàn)有版本和以后版本在二進(jìn)制上的兼容性。

            以下是一個(gè)mangling的例子:

            double foo();  => Mfoo@@NNBD@Z

            posted on 2010-05-24 23:00 空明流轉(zhuǎn) 閱讀(1580) 評(píng)論(7)  編輯 收藏 引用

            評(píng)論

            # re: SASL 的 Name Mangling 2010-05-24 23:59 OwnWaterloo
            SASL是什么? google了一下, 好像都不是……  回復(fù)  更多評(píng)論
              

            # re: SASL 的 Name Mangling 2010-05-25 00:11 空明流轉(zhuǎn)
            @OwnWaterloo
            softart shader language...  回復(fù)  更多評(píng)論
              

            # re: SASL 的 Name Mangling 2010-05-25 00:34 OwnWaterloo
            @空明流轉(zhuǎn)
            哦, 這樣……
            為什么要新造一門(mén)語(yǔ)言呢? —— 如果這個(gè)問(wèn)題過(guò)于無(wú)聊可以無(wú)視……
            我只是想收集一下創(chuàng)造一門(mén)語(yǔ)言的n個(gè)理由……
            謝謝……  回復(fù)  更多評(píng)論
              

            # re: SASL 的 Name Mangling 2010-05-25 08:40 ccsdu2009
            語(yǔ)法難懂!
              回復(fù)  更多評(píng)論
              

            # re: SASL 的 Name Mangling 2010-05-25 11:07 空明流轉(zhuǎn)
            @ccsdu2009
            呃,哪里難懂了。。。  回復(fù)  更多評(píng)論
              

            # re: SASL 的 Name Mangling 2010-05-25 18:16 ccsdu2009
            @空明流轉(zhuǎn)
            最基本 要讓學(xué)過(guò)其他語(yǔ)言的程序員快速掌握
              回復(fù)  更多評(píng)論
              

            # re: SASL 的 Name Mangling 2010-05-25 19:58 空明流轉(zhuǎn)
            @ccsdu2009
            name mangling 是編譯器處理的問(wèn)題,和語(yǔ)言本身無(wú)關(guān)。  回復(fù)  更多評(píng)論
              


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            久久久久人妻精品一区二区三区| 99久久夜色精品国产网站| 亚洲午夜久久久影院| 97久久综合精品久久久综合| 国产L精品国产亚洲区久久| 精品久久国产一区二区三区香蕉| 伊人久久大香线蕉精品不卡| 久久精品99久久香蕉国产色戒| 久久青青草原国产精品免费| 亚洲伊人久久综合影院| 精品久久久久久国产| 久久强奷乱码老熟女网站| 久久精品国产亚洲沈樵| 影音先锋女人AV鲁色资源网久久 | 99久久夜色精品国产网站| 国产精品久久国产精品99盘| 久久九九久精品国产| 99久久这里只有精品| 久久婷婷五月综合成人D啪 | 久久伊人亚洲AV无码网站| 国产精品久久波多野结衣| 亚洲国产精品无码久久一线| 久久久久久无码国产精品中文字幕 | 久久久久久曰本AV免费免费| 99热热久久这里只有精品68| 久久久久无码精品国产| 欧美亚洲国产精品久久| 久久久久人妻一区精品| 国产成人久久777777| 狠狠色丁香婷婷综合久久来| 国内精品久久久久久久97牛牛| 久久久www免费人成精品| 亚洲精品成人网久久久久久| 国产高清美女一级a毛片久久w| 精品国产乱码久久久久久郑州公司| 久久婷婷五月综合国产尤物app| 久久婷婷色综合一区二区| 久久精品国产亚洲αv忘忧草| 久久乐国产综合亚洲精品| 久久99热这里只有精品66| 久久精品国产99久久久古代|