<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Semo Compiler析碼多目標(biāo)編譯器

          聯(lián)合創(chuàng)作 · 2023-10-02 01:45

          析碼多目標(biāo)編譯器

          析碼是由突殼開(kāi)源開(kāi)發(fā)的一個(gè)多目標(biāo)編譯器(國(guó)產(chǎn)編譯器、產(chǎn)品級(jí)編譯器、開(kāi)源),基于獨(dú)特的的架構(gòu)設(shè)計(jì)使得該編譯器在“語(yǔ)言”跟“目標(biāo)機(jī)”的兼容性方面性能突出。項(xiàng)目在二零零八年二月發(fā)起,前后經(jīng)過(guò)兩年的開(kāi)發(fā)其整體架構(gòu)已經(jīng)成型,此前,突殼以一個(gè)C99前段,跟ARM體系后段發(fā)布了一個(gè)初步的演示版本,演示版本中已經(jīng)可以將C語(yǔ)言代碼編譯成可以在ARM平臺(tái)運(yùn)行的ELF軟件包。從最初的高級(jí)語(yǔ)言源代碼到最終二進(jìn)制的產(chǎn)生,析碼由突殼開(kāi)源完全自主的一個(gè)編譯平臺(tái),其中的技術(shù)與代碼完全來(lái)源于狂熱的開(kāi)發(fā)組成員,為了保證完整性,析碼的開(kāi)發(fā)沒(méi)有使用任何第三方代碼。

          架構(gòu)方面,“析碼”的架構(gòu)被劃分為“前”、“中”、“后”三個(gè)段落。首先在代碼上,段與段之間沒(méi)有任何關(guān)聯(lián),基于這個(gè)特性,我們可以在最大可重用前提之下,使析碼支持n中語(yǔ)言,n種機(jī)器。語(yǔ)言相關(guān)的部分被劃分到了“前段”,而與機(jī)器相關(guān)的部分被劃分到了“后段”,中段是跟具體某個(gè)語(yǔ)言或某型號(hào)機(jī)器無(wú)關(guān)的部分,它被完全重用了。任意語(yǔ)言之間有個(gè)共同點(diǎn),就是前段非常地接近,這種接近是指有對(duì)應(yīng)的單位可以相互轉(zhuǎn)換,例如“函數(shù)”、“循環(huán)”、“條件語(yǔ)句”等等,忽略掉語(yǔ)義層的差異,不同類(lèi)型的語(yǔ)言之間在詞法跟語(yǔ)法上對(duì)應(yīng)的單位可以等價(jià)地轉(zhuǎn)換。在析碼的架構(gòu)中,這些語(yǔ)言相同的部分,或說(shuō)它的相關(guān)性被隔離在了“前段”,讓其某組分析器作為組件存在,這在很大程度上提高了析碼編譯器的語(yǔ)言兼容性。后段方面,硬件體系部分也是大同小異,如果把范圍縮小到最小,那些差異僅僅局限于“指令集”之上,指令集抽象出來(lái)作為后段的一部分,使析碼在代碼生成初期不去關(guān)心具體體系,后期只需要簡(jiǎn)單地將中間形式其映射到某體系即可,如此,在更換目標(biāo)機(jī)器時(shí),只需要替換一下映射函數(shù),提高了機(jī)器兼容性。在中段部分,它完全獨(dú)立于任意語(yǔ)言,任意機(jī)器,它是一個(gè)純粹的抽象模塊,由抽象語(yǔ)法、抽象代碼構(gòu)成。

          析碼“0.3.0”特性

          • 符合C99標(biāo)準(zhǔn)的“預(yù)處理”、“詞法分析”、“語(yǔ)法語(yǔ)義分析”模塊。
          • 高度通用的抽象語(yǔ)法,可描述多種不同類(lèi)型的高級(jí)語(yǔ)言。
          • 基于“SSA”的抽象代碼。
          • 基于“York-Town”模型的寄存器分配器,高效且設(shè)備無(wú)關(guān)。
          • 支持“stdcall”、“cdecl”、“fastcall”、“armcall”,全面兼容“VC”、“GCC”、“ARMCC/TCC”等主流編譯器。
          • 兼容“ARMv6體系”的匯編器“Semo Assembler”,可以獨(dú)立使用。
          • 兼容“ARMv6體系”的動(dòng)態(tài)鏈接器“Semo Dynamic Linker”,支持可重定位式“ELF”的加載與鏈接。

          選擇析碼您將收獲

          • 對(duì)于在校學(xué)生,析碼具有完整的文檔系統(tǒng),它是你最佳的學(xué)習(xí)環(huán)境。
          • 對(duì)于學(xué)術(shù)研究者,突殼社區(qū)會(huì)提供全面的技術(shù)支持,可以保證你在最短的時(shí)間內(nèi)搭建試驗(yàn)平臺(tái)。
          • 對(duì)于工程開(kāi)發(fā)人員,析碼編譯器可以提供高效的工作效率。于此同時(shí),突殼社區(qū)還提供前后端定制服務(wù),降低您的生產(chǎn)成本。

          參與項(xiàng)目您將收獲

          • 對(duì)基礎(chǔ)軟件技術(shù)全維度認(rèn)識(shí)。
          • 產(chǎn)品級(jí)編譯器開(kāi)發(fā)經(jīng)驗(yàn)。

          項(xiàng)目歷程

          • 2008 - 2009 Semo C()mpiler 0.1.0
          • 完成了一個(gè)實(shí)驗(yàn)性的C語(yǔ)言前端。
          • 2009 - 2010 Semo C()mpiler 0.2.0
          • 基本架構(gòu)完成,發(fā)布第一個(gè)可以編譯版本(編譯出二進(jìn)制)。
          • C語(yǔ)言前端 15%。
          • 抽象語(yǔ)法 99%。
          • 第0層抽象代碼 99%。
          • SSA 99%。
          • ARMv6匯編代碼生成器 10%。
          • ARMv6匯編器 10%。
          • ARM-ELF動(dòng)態(tài)鏈接器 100%。
          • 2011 - 2012 Semo C()mpiler 0.3.0
          • 完成寄存器分配模塊。

          開(kāi)發(fā)團(tuán)隊(duì)

          • 王全偉 突殼開(kāi)源

          幾個(gè)問(wèn)題

          • Q:目前突殼的這個(gè)項(xiàng)目,對(duì)于未來(lái)的發(fā)展,團(tuán)隊(duì)有沒(méi)有大體的計(jì)劃和展望?
          • A:這是一個(gè)基于GPL協(xié)議的項(xiàng)目,團(tuán)隊(duì)也是以社區(qū)這種模式在做。其它更深遠(yuǎn)的不好說(shuō),因?yàn)轫?xiàng)目還是比較前期的,現(xiàn)在說(shuō)一些很不實(shí)際。
          • Q:和比較成熟的國(guó)外一些開(kāi)源軟件比較,析碼有哪些優(yōu)點(diǎn)?
          • A:在技術(shù)方面,析碼的架構(gòu)絕對(duì)稱(chēng)得上優(yōu)良,這是重要的基礎(chǔ)。只是這個(gè)架構(gòu)還很年輕,需要慢慢發(fā)展,路子比較長(zhǎng)。
          • Q:目前對(duì)于工具的使用上的指導(dǎo)文檔較少,對(duì)于一個(gè)剛剛接觸到這個(gè)項(xiàng)目的新人,如何讓我們花更少的時(shí)間,對(duì)整個(gè)編譯器有個(gè)直觀的認(rèn)識(shí)?
          • A:析碼有一套非常完整的文檔系統(tǒng)(wiki,pms,blog,bbs),部分內(nèi)容以后會(huì)開(kāi)放出來(lái)的。
          • Q:這個(gè)項(xiàng)目的發(fā)起是出于興趣還是工作需要呢?
          • A:開(kāi)源社區(qū)的組織結(jié)構(gòu)是比較松散的,興趣愛(ài)好是很關(guān)鍵的一點(diǎn)。
          • Q:已經(jīng)有一些開(kāi)源的編譯器了,為什么要自己做呢?析碼怎么跟它們競(jìng)爭(zhēng)呢?
          • A:維護(hù)別人代碼是很痛苦的,而且很難將其完全掌控。競(jìng)爭(zhēng)現(xiàn)在談不上,突殼把析碼做了一個(gè)基本的原型(C前段+ARM后段),其它的就要靠社區(qū)靠大家的力量了。
          • Q:析碼會(huì)考慮兼容其它語(yǔ)言嗎?或者基于它設(shè)計(jì)一門(mén)新的語(yǔ)言?
          • A:C前段+ARM后段的原型會(huì)作為析碼的主干版本由突殼維護(hù)下去,其它版本會(huì)放到社區(qū)去做。
          • A:析碼是一個(gè)編譯平臺(tái),特點(diǎn)在于源語(yǔ)言跟目標(biāo)機(jī)的兼容性方面,理論上基于析碼設(shè)計(jì)一門(mén)語(yǔ)言只需要實(shí)現(xiàn)一個(gè)該語(yǔ)言的front-para就可以,同時(shí)對(duì)于這種需求我們會(huì)提供相應(yīng)技術(shù)支持的。
          • Q:目前國(guó)內(nèi)MCU企業(yè),無(wú)法獨(dú)立生產(chǎn)的關(guān)鍵因素是沒(méi)有編譯器的支持,析碼以后會(huì)有這方面的支持嗎?
          • A:如果有這方面需求,我們很希望能與廠家展開(kāi)深入合作。從技術(shù)上來(lái)說(shuō),讓析碼支持某種芯片只需要實(shí)現(xiàn)“back-para”:主要包含匯編器、鏈接器,在這方面突殼已經(jīng)具備成功案例。
          瀏覽 20
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日日骚AV | 国产91又粗又大又爽的视频网站 | 三级片五月天 | 国产视频1区| 日韩中文字幕在线免费观看视频 |