欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

把高級語言編寫源程序變成目標程序

錢艷冰2年前23瀏覽0評論

把高級語言編寫源程序變成目標程序?

高級語言編譯成機器碼的過程如下: 1.詞法分析 詞法分析的任務是對由字符組成的單詞進行處理,從左至右逐個字符地對源程序進行掃描,產生一個個的單詞符號,把作為字符串的源程序改造成為單詞符號串的中間程序。

執行詞法分析的程序稱為詞法分析程序或掃描器。源程序中的單詞符號經掃描器分析,一般產生二元式:單詞種別;單詞自身的值。單詞種別通常用整數編碼,如果一個種別只含一個單詞符號,那么對這個單詞符號,種別編碼就完全代表它自身的值了。若一個種別含有許多個單詞符號,那么,對于它的每個單詞符號,除了給出種別編碼以外,還應給出自身的值。詞法分析器一般來說有兩種方法構造:手工構造和自動生成。手工構造可使用狀態圖進行工作,自動生成使用確定的有限自動機來實現。2語法分析 編譯程序的語法分析器以單詞符號作為輸入,分析單詞符號串是否形成符合語法規則的語法單位,如表達式、賦值、循環等,最后看是否構成一個符合要求的程序,按該語言使用的語法規則分析檢查每條語句是否有正確的邏輯結構,程序是最終的一個語法單位。編譯程序的語法規則可用上下文無關文法來刻畫。語法分析的方法分為兩種:自上而下分析法和自下而上分析法。自上而下就是從文法的開始符號出發,向下推導,推出句子。而自下而上分析法采用的是移進歸約法,基本思想是:用一個寄存符號的先進后出棧,把輸入符號一個一個地移進棧里,當棧頂形成某個產生式的一個候選式時,即把棧頂的這一部分歸約成該產生式的左鄰符號。3中間代碼 中間代碼是源程序的一種內部表示,或稱中間語言。中間代碼的作用是可使編譯程序的結構在邏輯上更為簡單明確,特別是可使目標代碼的優化比較容易實現中間代碼,即為中間語言程序,中間語言的復雜性介于源程序語言和機器語言之間。中間語言有多種形式,常見的有逆波蘭記號、四元式、三元式和樹。4代碼優化 代碼優化是指對程序進行多種等價變換,使得從變換后的程序出發,能生成更有效的目標代碼。所謂等價,是指不改變程序的運行結果。所謂有效,主要指目標代碼運行時間較短,以及占用的存儲空間較小。這種變換稱為優化。有兩類優化:一類是對語法分析后的中間代碼進行優化,它不依賴于具體的計算機;另一類是在生成目標代碼時進行的,它在很大程度上依賴于具體的計算機。對于前一類優化,根據它所涉及的程序范圍可分為局部優化、循環優化和全局優化三個不同的級別。5目標代碼 目標代碼生成是編譯的最后一個階段。目標代碼生成器把語法分析后或優化后的中間代碼變換成目標代碼。目標代碼有三種形式: ① 可以立即執行的機器語言代碼,所有地址都重定位; ② 待裝配的機器語言模塊,當需要執行時,由連接裝入程序把它們和某些運行程序連接起來,轉換成能執行的機器語言代碼; ③ 匯編語言代碼,須經過匯編程序匯編后,成為可執行的機器語言代碼。目標代碼生成階段應考慮直接影響到目標代碼速度的三個問題:一是如何生成較短的目標代碼;二是如何充分利用計算機中的寄存器,減少目標代碼訪問存儲單元的次數;三是如何充分利用計算機指令系統的特點,以提高目標代碼的質量。6表格管理 編譯過程中源程序的各種信息被保留在種種不同的表格,編譯各階段的工作都涉及到構造、查找、或更新有關的表格。編譯程序的公共輔助部分。對源程序中的各種量進行管理,登記在相應的表格。編譯程序處理時通過查表得到所需的信息。7出錯處理 如果編譯過程中發現源程序有錯誤,編譯程序應報告錯誤的性質和錯誤的發生的地點,并且將錯誤所造成的影響限制在盡可能小的范圍內,使得源程序的其余部分能繼續被編譯下去,有些編譯程序還能自動糾正錯誤,這些工作由錯誤處理程序完成。需要注意的是,一般上編譯器只做語法檢查和最簡單的語義檢查,而不檢查程序的邏輯。

表達式樹 java,把高級語言編寫源程序變成目標程序