北京網(wǎng)站建設(shè)包括代碼,代碼生成是將語法、語義分析后的中間結(jié)果(中文)轉(zhuǎn)化為等價(jià)的目標(biāo)程序或目標(biāo)程序塊的過程。詞法分析、句法分析和語義分析統(tǒng)稱為編譯系統(tǒng)的前端。屬于分析部分。代碼生成和代碼優(yōu)化一起稱為編譯系統(tǒng)的后端,屬于綜合部分。中間結(jié)果是用中間語言(例如三元、四元或反波蘭語)表達(dá)的程序。目標(biāo)程序是用目標(biāo)語言編寫的;它可以是機(jī)器語言、匯編語言甚至是高級(jí)語言。隨著計(jì)算機(jī)編譯環(huán)境和執(zhí)行環(huán)境的不斷完善,不僅可以生成可以直接執(zhí)行的目標(biāo)程序,還可以生成可重定位或可執(zhí)行的鏈接目標(biāo)程序模塊。最后,通過鏈接加載程序,形成可直接執(zhí)行的目標(biāo)程序。代碼生成不僅僅與編譯環(huán)境有關(guān)。而且跟運(yùn)行環(huán)境有關(guān)。所有生成的目標(biāo)程序都應(yīng)該符合鏈接加載所要求的規(guī)范。代碼生成中的存儲(chǔ)分配和寄存器分配是重要而復(fù)雜的問題,直接影響目標(biāo)程序的效率,應(yīng)引起足夠的重視。
運(yùn)行時(shí)存儲(chǔ)空間的組織和管理是一個(gè)復(fù)雜而又非常重要的問題。首先,我們必須了解一個(gè)過程的靜態(tài)源程序和它的目標(biāo)程序在運(yùn)行時(shí)的活動(dòng)之間的關(guān)系。流程的活動(dòng)是指流程的執(zhí)行。為了管理流程在一次執(zhí)行中所需的信息。使用一個(gè)連續(xù)的存儲(chǔ)塊,我們稱這樣一個(gè)連續(xù)的存儲(chǔ)塊為活動(dòng)記錄。臨時(shí)單元、上下文向量、局部變量、正式單元、靜態(tài)鏈接、動(dòng)態(tài)鏈接和返回地址都記錄在活動(dòng)記錄中。
共有三種存儲(chǔ)分配策略:靜態(tài)分配、棧動(dòng)態(tài)分配和堆動(dòng)態(tài)分配。堆棧(stack)是一個(gè)特定的存儲(chǔ)區(qū)域,一端固定,另一端浮動(dòng)。對(duì)于這個(gè)存儲(chǔ)區(qū)。所有信息都存儲(chǔ)在堆棧中,也稱為數(shù)組。堆棧的概念廣泛應(yīng)用于編譯技術(shù)和其他軟件技術(shù)中。堆是一個(gè)特定的存儲(chǔ)區(qū)域。它的分配和使用方法是把它分成若干個(gè)變長的子存儲(chǔ)區(qū),其中一部分用來存儲(chǔ)數(shù)據(jù)。有些是免費(fèi)使用的。創(chuàng)建數(shù)據(jù)時(shí)。需要從免費(fèi)公共區(qū)域中選擇一個(gè)足夠大的免費(fèi)區(qū)域來存儲(chǔ)數(shù)據(jù)。當(dāng)數(shù)據(jù)不再被使用時(shí),相應(yīng)的存儲(chǔ)區(qū)域就會(huì)被釋放。這種存儲(chǔ)分配方法稱為堆分配。堆分配適用于程序操作中的可變長度數(shù)據(jù)。比如USP語言教育中的表格。
生成代碼時(shí),首先考慮每個(gè)程序或中間序列中的句子對(duì)應(yīng)的目標(biāo)程序結(jié)構(gòu),然后進(jìn)行一對(duì)多的轉(zhuǎn)換。有的可能事先不知道,但可以先等確定了,記下位置,拉青蛙,知道了眼淚再回到它身邊。為7 生成更有效的目標(biāo)代碼。另一個(gè)重要的考慮因素是如何更有效地使用寄存器。此外。地址計(jì)算、數(shù)組引用等也各不相同,這里就不一一描述了。
我們專注高端建站,小程序開發(fā)、軟件系統(tǒng)定制開發(fā)、BUG修復(fù)、物聯(lián)網(wǎng)開發(fā)、各類API接口對(duì)接開發(fā)等。十余年開發(fā)經(jīng)驗(yàn),每一個(gè)項(xiàng)目承諾做到滿意為止,多一次對(duì)比,一定讓您多一份收獲!