tinyos系統(tǒng)學(xué)習(xí) HPL是什么意思?
HPL是什么意思?英雄職業(yè)聯(lián)賽(H設(shè)計(jì)編程語(yǔ)言需要用什么(無需提供步驟)?自己設(shè)計(jì)一門編程語(yǔ)言,必須考慮以下幾點(diǎn)。要確定目標(biāo)受眾,首先要明確你設(shè)計(jì)的語(yǔ)言的目標(biāo)受眾是什么。比如是C/C、Java、Pyt
HPL是什么意思?
英雄職業(yè)聯(lián)賽(H
設(shè)計(jì)編程語(yǔ)言需要用什么(無需提供步驟)?
自己設(shè)計(jì)一門編程語(yǔ)言,必須考慮以下幾點(diǎn)。
要確定目標(biāo)受眾,首先要明確你設(shè)計(jì)的語(yǔ)言的目標(biāo)受眾是什么。比如是C/C、Java、Python等通用語(yǔ)言,或者是AWK、Make、CMake (DSL)等領(lǐng)域?qū)S谜Z(yǔ)言。
如果是通用語(yǔ)言,就是C/C等系統(tǒng)語(yǔ)言,或者Java、python等應(yīng)用語(yǔ)言。
根據(jù)目標(biāo)受眾確定要支持的語(yǔ)言功能,在您的編程中確定要支持的語(yǔ)言功能。比如是否支持面向?qū)ο缶幊?、函?shù)式編程、并行處理、泛型編程等。
另外,要不要確定是強(qiáng)類型語(yǔ)言還是弱類型語(yǔ)言?無論是靜態(tài)類型語(yǔ)言還是動(dòng)態(tài)類型語(yǔ)言等等。
制定語(yǔ)言的語(yǔ)法規(guī)范和語(yǔ)義規(guī)范根據(jù)語(yǔ)言要支持的特征,制定語(yǔ)言的語(yǔ)法規(guī)范。比如變量怎么聲明,函數(shù)怎么定義,支持哪些控制語(yǔ)句,各種表達(dá)式的運(yùn)算規(guī)則。
確定語(yǔ)言的實(shí)現(xiàn)。同一種語(yǔ)言可以有不同的實(shí)現(xiàn)。比如像大部分C/C實(shí)現(xiàn)一樣,直接編譯成二進(jìn)制機(jī)器碼?還是像Java一樣,編譯成字節(jié)碼然后用虛擬機(jī)運(yùn)行?或者直接說明執(zhí)行等等。
編譯器前端可用的工具,可以選擇手寫或者使用工具。
如果手寫,比較簡(jiǎn)單實(shí)用的方法是遞歸下降和算子優(yōu)先。
如果你選擇一個(gè)工具,有許多工具可用,如萊克斯YACC和Flex Bison。
如果主要目的是學(xué)習(xí),還是手寫比較好。
對(duì)于后端來說,代碼優(yōu)化是非常重要的一部分。毫不夸張地說,代碼優(yōu)化是一個(gè)現(xiàn)代編譯器成功的決定性因素,也是整個(gè)編譯器設(shè)計(jì)中最困難、最復(fù)雜的部分,也是最容易出現(xiàn)bug的部分。
一般來說,建議選擇一些成熟的工具。比如LLVM應(yīng)該是首選。著名的Clang的后端是LLVM。LLVM現(xiàn)在已經(jīng)相當(dāng)成熟了。近年來,許多新的編譯器使用LLVM作為后端。
如果你認(rèn)為它 有用,點(diǎn)個(gè)贊!
兒童 對(duì)編譯器、OS內(nèi)核、性能調(diào)優(yōu)、虛擬化等技術(shù)感興趣的s鞋歡迎關(guān)注!