<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      編譯原理(1)總結

      ??本科是網絡工程,由于沒有學<<編譯原理>>這門課,打算兩個月把國科大的編譯原理梳理完,把其中我認為的精髓概括一下,三天一篇,作為筆記。

      一、什么是編譯程序

      ??為了了解什么是編譯程序,首先了解下翻譯程序是什么:

      把某一種語言程序(稱為源語言程序)等價地轉換為另一種語言程序(目標語言程序)的程序。


      ??而編譯程序就是一種翻譯程序。它把某一種高級語言程序等價轉換為另一種低級語言程序(如匯編語言或機器語言)的程序。
      ??編譯程序還有以下分類:

      • 診斷編譯程序(Diagnostic Complier,幫助程序員排錯)
      • 優化編譯程序(Optimizing Complier,提高目標代碼執行效率)
      • 交叉編譯程序(Cross Complier)

      兩個概念:

      • 宿主機(運行編譯程序的機器)
      • 目標機(運行目標源程序的機器)
        一般來說,宿主機和目標機是同一類型機器,如果不同,則叫做交叉編譯程序,如在Windwos交叉編譯可在Linux上運行的程序。
      • 可變目標編譯程序(Retargetable Complier)

      ??還有一種翻譯程序——解釋程序(Interpreter),即把源語言的源程序作為輸入,但不產生目標程序,而是邊解釋邊執行源程序。

      ??
      ??

      二、為什么要學習編譯原理

      • 理解計算系統
      • 設計計算系統
      • 訓練計算思維
        • 抽象
        • 自動化
        • 問題分解
        • 遞歸
        • 權衡
        • 保護、冗余、容錯、糾錯和恢復
        • 利用啟發式推理來尋求解答
        • 在不確定情況下的規劃、學習和調度
        • ......

      三、編譯過程

      ??編譯程序是怎樣把高級語言(如C++)翻譯成低級語言的(如機器指令)的?

      The complier can translate a program from source language to target language.

      ??以把英文翻譯為中文為例。

      • 識別出句子中的單詞——詞法分析
      • 分析句子的結構——語法分析
      • 根據句子的含義進行初步翻譯——中間代碼產生
      • 對譯文進行修飾——優化
      • 寫出最后的譯文——目標代碼產生
      1. 詞法分析

      ??任務:對源程序字符串進行掃描和分解,識別出單詞符號。
      ??原則:構詞規則
      ??工具:有限自動機

      2. 語法分析

      ??任務:在詞法分析的基礎上,根據語法規則把單詞符號分解成各類語法單位語法范疇
      ??原則:語法規則
      ??工具:上下文無關文法

      3. 中間代碼產生

      ??任務:對各類語法單位按語言的 語義進行初步翻譯。
      ??原則:語義規則
      ??工具:屬性文法
      ??中間代碼:三元式、四元式、樹...

      4. 優化

      ??任務:對前階段產生的中間代碼進行加工變換,以期在最后階段產生更高效的目標代碼。
      ??原則:等價變換規則

      4. 目標代碼產生

      ??任務:把中間代碼變換成特定機器上的目標代碼。
      ??原則:依賴于硬件系統結構和機器中指令的具體含義

      ??目標代碼三種形式

      • 匯編指定代碼:需要進行匯編
      • 絕對指定代碼:可直接運行
      • 可重定位指令代碼:需要鏈接

      四、編譯程序的結構

      五、編譯程序的開發

      1. 使用機器語言

      優點:可針對具體機器,充分發揮計算機的系統功能(使用某些特殊指令)、生成的程序效率高。
      缺點:可讀性極差、可維護性極低、開發效率極低、可移植性極低。

      2.使用匯編語言

      優點:機器指令語義化,有一定可讀性。可針對具體機器,充分發揮計算機的系統功能(使用某些特殊指令)、生成的程序效率高。
      缺點:需要相應匯編器,可讀性差、可維護性低、開發效率低、可移植性低。

      3.使用高級語言

      ??如果已存在某種高級語言(如C++,已存在C++的編譯器和匯編器)。現假設新語言為S,目標語言為T,實現語言為I,那么,可以利用現有的I語言為編程工具,編寫從S語言到T語言的編譯器,這樣,一種新的語言S就產生了。因此,高級語言的產生過程最開始一定是由機器語言迭代產生的。

      優點:程序易讀、易理解、易維護、編碼效率高。
      缺點:不能精準控制目標代碼的生成,目標代碼執行效率可能不高,可通過插入目標代碼方式解決。(如在C/C++中通過內聯匯編實現,C#通過EMIT寫IL代碼實現)

      posted @ 2020-12-06 12:55  白煙染黑墨  閱讀(421)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲成人四虎在线播放| 别揉我奶头~嗯~啊~的视频| 性色av一区二区三区v视界影院| 一亚洲一区二区中文字幕| 日本一区二区三本视频在线观看| 欧美激情精品久久久久久| 自拍偷自拍亚洲精品播放| 国产亚洲精品第一综合另类| 中文字幕日韩精品人妻| 国产成人亚洲无码淙合青草| 综合亚洲网| 久久精品夜色国产亚洲av| 亚洲乱亚洲乱妇50p| 色综合久久人妻精品日韩| 99精品国产综合久久久久五月天| 亚洲乱码日产精品一二三| 国产一区二区av天堂热| 亚洲国产精品高清线久久| 国产综合久久亚洲综合| 极品少妇无套内射视频| 成人国产精品日本在线观看| 国产精品制服丝袜第一页| 顺义区| 久久精品一本到99热免费| 精品无码人妻| 4hu四虎永久在线观看| 欧美精品在线观看视频 | 国产精品中文字幕自拍| 自拍视频在线观看成人| 国产精品无码专区| 久久久精品人妻一区二区三区 | 亚洲av永久无码天堂影院| 九九热视频在线免费观看| 国产一区二区三区不卡视频| 国产精品久久国产三级国不卡顿| 日本夜爽爽一区二区三区| 色老头亚洲成人免费影院| 欧美性猛交xxxx富婆| 国产精品男女午夜福利片| 国产高清在线a视频大全 | 日韩不卡无码精品一区高清视频 |