代碼生成
  • 更新時間:2024-10-29 04:35:29
  • 網(wǎng)站建設(shè)
  • 發(fā)布時間:1年前
  • 267

北京網(wǎng)站建設(shè)包括代碼,代碼生成是將語法、語義分析后的中間結(jié)果(中文)轉(zhuǎn)化為等價的目標(biāo)程序或目標(biāo)程序塊的過程。詞法分析、句法分析和語義分析統(tǒng)稱為編譯系統(tǒng)的前端。屬于分析部分。代碼生成和代碼優(yōu)化一起稱為編譯系統(tǒng)的后端,屬于綜合部分。中間結(jié)果是用中間語言(例如三元、四元或反波蘭語)表達(dá)的程序。目標(biāo)程序是用目標(biāo)語言編寫的;它可以是機(jī)器語言、匯編語言甚至是高級語言。隨著計算機(jī)編譯環(huán)境和執(zhí)行環(huán)境的不斷完善,不僅可以生成可以直接執(zhí)行的目標(biāo)程序,還可以生成可重定位或可執(zhí)行的鏈接目標(biāo)程序模塊。最后,通過鏈接加載程序,形成可直接執(zhí)行的目標(biāo)程序。代碼生成不僅僅與編譯環(huán)境有關(guān)。而且跟運行環(huán)境有關(guān)。所有生成的目標(biāo)程序都應(yīng)該符合鏈接加載所要求的規(guī)范。代碼生成中的存儲分配和寄存器分配是重要而復(fù)雜的問題,直接影響目標(biāo)程序的效率,應(yīng)引起足夠的重視。

代碼的生成

運行時存儲空間的組織和管理是一個復(fù)雜而又非常重要的問題。首先,我們必須了解一個過程的靜態(tài)源程序和它的目標(biāo)程序在運行時的活動之間的關(guān)系。流程的活動是指流程的執(zhí)行。為了管理流程在一次執(zhí)行中所需的信息。使用一個連續(xù)的存儲塊,我們稱這樣一個連續(xù)的存儲塊為活動記錄。臨時單元、上下文向量、局部變量、正式單元、靜態(tài)鏈接、動態(tài)鏈接和返回地址都記錄在活動記錄中。

共有三種存儲分配策略:靜態(tài)分配、棧動態(tài)分配和堆動態(tài)分配。堆棧(stack)是一個特定的存儲區(qū)域,一端固定,另一端浮動。對于這個存儲區(qū)。所有信息都存儲在堆棧中,也稱為數(shù)組。堆棧的概念廣泛應(yīng)用于編譯技術(shù)和其他軟件技術(shù)中。堆是一個特定的存儲區(qū)域。它的分配和使用方法是把它分成若干個變長的子存儲區(qū),其中一部分用來存儲數(shù)據(jù)。有些是免費使用的。創(chuàng)建數(shù)據(jù)時。需要從免費公共區(qū)域中選擇一個足夠大的免費區(qū)域來存儲數(shù)據(jù)。當(dāng)數(shù)據(jù)不再被使用時,相應(yīng)的存儲區(qū)域就會被釋放。這種存儲分配方法稱為堆分配。堆分配適用于程序操作中的可變長度數(shù)據(jù)。比如USP語言教育中的表格。

生成代碼時,首先考慮每個程序或中間序列中的句子對應(yīng)的目標(biāo)程序結(jié)構(gòu),然后進(jìn)行一對多的轉(zhuǎn)換。有的可能事先不知道,但可以先等確定了,記下位置,拉青蛙,知道了眼淚再回到它身邊。為7 生成更有效的目標(biāo)代碼。另一個重要的考慮因素是如何更有效地使用寄存器。此外。地址計算、數(shù)組引用等也各不相同,這里就不一一描述了。

我們專注高端建站,小程序開發(fā)、軟件系統(tǒng)定制開發(fā)、BUG修復(fù)、物聯(lián)網(wǎng)開發(fā)、各類API接口對接開發(fā)等。十余年開發(fā)經(jīng)驗,每一個項目承諾做到滿意為止,多一次對比,一定讓您多一份收獲!

本文章出于推來客官網(wǎng),轉(zhuǎn)載請表明原文地址:https://www.tlkjt.com/web/12155.html
推薦文章

在線客服

掃碼聯(lián)系客服

3985758

回到頂部